我在base64中对body进行了编码,但是我只能将它作为NSData传递,而PHP只会对字符串进行decrpyt。如何在php中解密NSData?
Swift代码
request.HTTPMethod = "POST"
let encode = bodyData.dataUsingEncoding(NSUTF8StringEncoding)!;
let crypt = encode.base64EncodedDataWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
request.HTTPBody = crypt
PHP代码
$postVarUser = base64_decode($_POST["usernamedata"]);
$postVarPass = base64_decode($_POST["passworddata"]);
echo $_POST["usernamedata"];//prints nil
echo $_POST["passworddata"];//prints nil
答案 0 :(得分:2)
当您接收字节时,您应该使用php://input
接收它们,如下所示:
// Get data from POST
$dataEnc = file_get_contents('php://input');
// Decode data
$dataDec = base64_decode($dataEnc);
// Get username
$username = $dataDec["usernamedata"];
echo($username);
如果在编码之前正确构造了对象,这应该有效。
答案 1 :(得分:0)
NSData
只是一堆字节。如果您将HTTPBody设置为该值,则在解码之前,您无法在PHP端使用$_POST
将其视为键/值。
我不懂PHP,但是通过Google搜索,看起来你想要$HTTP_RAW_POST_DATA
,试试:base64_decode($HTTP_RAW_POST_DATA);