如何在PHP脚本中解码NSData?

时间:2016-05-25 14:45:08

标签: php ios swift base64

我在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

2 个答案:

答案 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);