【问题标题】:No post data returned by post request using NSURLSession使用 NSURLSession 的 post 请求没有返回 post 数据
【发布时间】:2015-05-28 18:32:37
【问题描述】:

我正在尝试学习向我的基于 PHP 的服务发送 HTTP 请求。

点击一个按钮我的代码是:

@IBAction func clickForRequest(sender: AnyObject) {

    let myUrl = NSURL(string: "http://localhost/app");
    let request = NSMutableURLRequest(URL:myUrl!);
    request.HTTPMethod = "POST";

    // Compose a query string
    let postString = "firstName=James&lastName=Bond";

    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
        data, response, error in

        if error != nil
        {
            println("error=\(error)")
            return
        }

        // You can print out response object
        println("response = \(response)")

        // Print out response body
        let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
        println("responseString = \(responseString)")

        //Let's convert response sent from a server side script to a NSDictionary object:

        var err: NSError?
        var myJSON = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error:&err) as? NSDictionary

        if let parseJSON = myJSON {
            // Now we can access value of First Name by its key
            var firstNameValue = parseJSON["firstName"] as? String
            println("firstNameValue: \(firstNameValue)")
        }

    }

    task.resume()

}

我的 PHP 代码是:

<?php

echo "<pre>";
print_r($_POST);
echo "</pre>";

?>

但我得到的 ResponseString 只是一个空数组:

Array( )

谢谢。

【问题讨论】:

  • 解析 JSON 后你的 'err' 对象是否为空?
  • 你的代码works for me(用我的Sinatra服务器试过,我们可以看到帖子元素)。所以确实问题可能出在你的 php 上。

标签: ios swift nsurlsession


【解决方案1】:

我认为问题在于您的 PHP sn-p 没有输出有效的 JSON,这是您试图反序列化的内容。

试试这个

<?php
exit(json_encode($_POST));
?>

【讨论】:

  • 试过但结果相同。问题是 $_POST 数组是空的,即使我发布了一个字符串。问题一定出在 Posting 参数上。
  • 我在操场上仔细检查了代码并得到了预期的响应。该错误必须在您的服务器设置中。我强烈建议您使用 postman 之类的工具或 Chrome 的 advancedRest 扩展程序仔细检查您的服务器/php。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多