Alamofire:参数未传递给服务器

Posted

技术标签:

【中文标题】Alamofire:参数未传递给服务器【英文标题】:Alamofire: Parameters not being passed to server 【发布时间】:2018-09-29 19:08:10 【问题描述】:

这是我第一次尝试使用 Alamofire,所以如果这是一个明显的疏忽,请原谅我!我已经阅读了很多其他答案并进行了很多调整,但似乎没有任何效果。

我正在尝试做一个非常简单的测试,其中一个参数从 ios 应用程序传递到服务器,它检查它是否等于“测试”,如果是,则将一些 json 数据返回给 iOS 应用程序。

虽然debugPrint方法输出SUCCESS,但iOS app打印的json数据始终是“未设置”,表示参数实际上并没有传递到php文件中。我想知道是否有人可以帮助我!

目前我并不太关心解析 json,但我只是想找出丢失参数的原因!提前致谢。

这是我的 PHP:

<?php  
    $name = $_POST["name"];

    if (isset($name))
      
        if($name == "Test")
          echo json_encode("Correct");
        
        else
        
         echo json_encode("Incorrect");
        
    else
        echo json_encode("Not set");
    
?>

这是我的快速代码:

let url = "http://mywebsite.com/xxx.php"

let parameters: [String:String] = ["name":"Test"]

Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default).responseJSON response in

    debugPrint(response)

    if let JSON = response.result.value 
        print("JSON: \(JSON)") 
    
    else 
        print(response.result.error!)
    

【问题讨论】:

【参考方案1】:

URLEncoding.default 更改为JSONEncoding.default

将编码设置为URLEncoding.default 将通过查询字符串传递参数。 (即http://mywebsite.com/xxx.php?name=test)。

还将$POST_ 更改为$_POST

【讨论】:

感谢您的回复,我已经尝试过了,但我仍然得到“未设置”,当我尝试在 json_encode 中返回 $name 时,它​​显示为 再次感谢,我已经改变了,但它仍然返回 你在哪里看到 ?在 xcode 的控制台中?还是在调试php代码的时候? 只是为了调试我尝试改变 echo json_encode("Not set");回显 json_encode($name); ,当应用程序读取该数据时,输出为 JSON:。这是在 xcode 控制台中 好吧,我在 php 方面不太好,但尝试使用有效的 json 执行 json_encode ,f.e. echo json_encode(array('success' =&gt; 'true')

以上是关于Alamofire:参数未传递给服务器的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire/Swiftyjson - 将 JSON 类型传递给 Objc 协议委托

将字典值作为空值传递给 alamofire 服务 ios swift

如何使用 alamofire 和数组形式的参数上传图像

错误:导入 Alamofire

如何在 Alamofire 中上传文件并在参数中传递数据 - swift 5

jquery Ajax 调用 - 数据参数未传递给 MVC 控制器操作