【问题标题】:How do I decode NSData in php script?如何在 php 脚本中解码 NSData?
【发布时间】:2016-05-25 14:45:08
【问题描述】:

我用 base64 编码了正文,但我只能将它作为 NSData 传递,而 PHP 只会对字符串进行解密。如何在 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

【问题讨论】:

    标签: php ios swift base64


    【解决方案1】:

    当您接收字节时,您应该使用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);
    

    如果在编码之前已经正确构造了对象,这应该可以工作。

    【讨论】:

    【解决方案2】:

    NSData 只是一堆字节。如果将 HTTPBody 设置为该值,则无法在 PHP 端使用 $_POST 在解码之前将其视为键/值。

    我不知道 PHP,但从谷歌搜索,看起来你想要$HTTP_RAW_POST_DATA,试试:base64_decode($HTTP_RAW_POST_DATA);

    【讨论】:

      猜你喜欢
      • 2017-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多