如何从 AFNETWORKING POST 获取参数

Posted

技术标签:

【中文标题】如何从 AFNETWORKING POST 获取参数【英文标题】:How to GET parameters from AFNETWORKING POST 【发布时间】:2015-04-17 16:24:15 【问题描述】:

我如何从 Swift 中获取参数值,文件上传已经工作,我试过 $_GET["familyId"],但没有成功?

斯威夫特:

    let manager = AFHTTPRequestOperationManager()
    let url = "http://localhost/test/upload.php"
    var fileURL = NSURL.fileURLWithPath(NSBundle.mainBundle().pathForResource("test_1", ofType: "mov")!)
    var params = [
        "familyId":locationd,
        "contentBody" : "Some body content for the test application",
        "name" : "the name/title",
        "typeOfContent":"photo"
    ]

    manager.POST( url, parameters: params,
        constructingBodyWithBlock:  (data: AFMultipartFormData!) in
            println("")
            var res = data.appendPartWithFileURL(fileURL, name: "fileToUpload", error: nil)
            println("was file added properly to the body? \(res)")
        ,
        success:  (operation: AFHTTPRequestOperation!, responseObject: AnyObject!) in
            println("Yes thies was a success")
        ,
        failure:  (operation: AFHTTPRequestOperation!, error: NSError!) in
            println("We got an error here.. \(error.localizedDescription)")
    )

PHP:

 $target_dir = "uploads/";
 $target_dir = $target_dir . basename($_FILES["fileToUpload"]["name"]);

 if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_dir)) 
echo json_encode([
    $user_info;
    "Message" => "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.",
    "Status" => "OK",
     ]);

【问题讨论】:

您尚未将该 id 添加到 url。你应该看看$_POST['familyId'] @MarcB 我不明白?看看哪里? 等一下,让我说对了,您使用的是 HTTP 方法 POST,对吗?为什么要尝试使用 GET 而不再使用 POST? 【参考方案1】:

您面临的问题是您找错地方了。正如您所说,您正在使用 AFNetworking 的 POST 方法来发布数据。强调 POST。 GET 和 POST 是两个完全不同的东西。 GET 用于检索存储在 url 中的值,例如 www.example.com/example-get.php?key1=value1&key2=value2。您可以通过$_GET['key1'] 访问PHP 中的不同值。 POST 是不同的东西。这与 HTTP 消息正文一起发送,在浏览历史记录或 url 中看不到。您可以使用$_POST['familyId'] 访问您的数据。我建议多读一点,所以我会提供this 开始。

祝你好运。

【讨论】:

【参考方案2】:

您的主要问题是变量位于 $_POST 中,而您正在寻找 $_GET 中的变量。

我可以从代码中看到数据是在请求的帖子正文中发送的。这基本上就是 jkaufman 在他的回答中所说的。

尝试以下变体:

<?php
    $FamilyID = $_POST['familyId'];
    // ... do stuff with it ...
?>

您可能会发现这些链接提供了丰富的信息(因为您已要求提供可靠和/或官方来源)。

What is the difference between POST and GET? http://php.net/manual/en/reserved.variables.post.php http://developer.infoconnect.com/get-vs-post-%E2%80%93-restful-primer http://www.w3schools.com/tags/ref_httpmethods.asp http://www.programmerinterview.com/index.php/general-miscellaneous/html-get-vs-post/ http://www.diffen.com/difference/GET_%28HTTP%29_vs_POST_%28HTTP%29 http://blog.teamtreehouse.com/the-definitive-guide-to-get-vs-post

【讨论】:

以上是关于如何从 AFNETWORKING POST 获取参数的主要内容,如果未能解决你的问题,请参考以下文章

如何从服务器获取 AFNetworking 中的完整响应字符串?

iOS 从带有 JSON 参数的 AFNetworking HTTP POST 方法获取 JSON 响应

AFNetworking - 如何通过 ID 发出 POST 请求

通过 AFNetworking 从服务器获取 Json 响应

AFNetworking 2.0 从故障块中的代码 400 获取 JSON

无法使用 AFNetworking Objective-C 获取 XML 响应的内部节点