当我在数据库中使用 Alamofire 发送三个数组帖子时出现错误?

Posted

技术标签:

【中文标题】当我在数据库中使用 Alamofire 发送三个数组帖子时出现错误?【英文标题】:I get error while I send three array post with Alamofire in database? 【发布时间】:2020-09-29 07:35:41 【问题描述】:

这是我的 php 代码。我需要在这里发送 3 个参数,例如 cammand 、 mobile 和 token 。包括“../db.php”;

//$_POST['command'] ;//
$command = $_POST['command'];
if ($command == "register_user") //register user
    $mobile = $_POST['mobile'];
    $token = $_POST['token'];
    $sql = "SELECT * FROM  tbl_user where mobile =$mobile";
    $result = mysqli_query($connection, $sql);
    $num = mysqli_num_rows($result);

这是我的快速代码。

import Foundation
import UIKit
import Alamofire
class LoginViewController: UIViewController 
    
     let appDelegate = UIApplication.shared.delegate as! AppDelegate
     
    @IBOutlet weak var inputTelephoneNumber: UITextField!
    
    override func viewDidLoad() 
        super.viewDidLoad()
       
    
    
    @IBAction func loginBtn(_ sender: Any) 
        
        let Parametrs : Parameters = [
            
            "command": "register_user",
            "mobile": inputTelephoneNumber.text!,
            "token": appDelegate.myToken!
            
        ]
        AF.request("http://192.xxxxxxxxx/xxxxxxxx/api/sms_verify.php", method: .post, parameters: Parametrs, encoding: JSONEncoding.default)
        .responseJSON  response in
            print(response)
     
        
       let tokenURL = "http://192xxxxxx/xxxxxxxxx/api/sms_verify.php"
       if let url = URL(string: tokenURL) 
           let task = URLSession.shared.dataTask(with: url) 
               data, response, error in
               if error != nil 
                   print(error!)
                else 
                   if let responseString = String(data: data!, encoding: .utf8) 
                       print(responseString)
                   
               
           
           task.resume()
       
   
    
    
    
   



我从 xcode 收到此错误。

<br />
<b>Notice</b>:  Undefined index: command in <b>/opt/lampp/htdocs/foroshgah1/api/sms_verify.php</b> on line <b>5</b><br />

failure(Alamofire.AFError.responseSerializationFailed(reason: Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(error: Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo=NSDebugDescription=Invalid value around character 0.)))

    我尝试发送三个参数,例如 cammand = register_user 、 mobile 和 token。

    我尝试像 json 编码一样发送它们,但我不知道我的格式是否正确?

【问题讨论】:

这能回答你的问题吗? Receive JSON POST with PHP 我的 PHP 代码工作正常,没有任何问题。我有问题 swift 如果您将数据作为 JSON 发送,那么您需要修改您的 PHP 代码 - 当您发送 JSON 时,PHP 不会填充 $_POST。或者您首先需要从客户端发送其他内容 - 例如“正常”application/x-www-form-urlencoded 请求。 我说我的 PHP 代码工作正常,我的 android 应用程序与这个 PHP 工作得很好。 如果你有使用 Alamofire 的经验写评论。 【参考方案1】:

要在 post 请求中传递 URL 编码的参数,您需要调用 Alamofire 的请求函数,将 URLEncoding 的实例作为 encoding 参数传递:

AF.request(
    "http://192.xxxxxxxxx/xxxxxxxx/api/sms_verify.php",
    method: .post,
    parameters: Parametrs,
    encoding: URLEncoding.default
).responseJSON  response in
    print(response)

【讨论】:

以上是关于当我在数据库中使用 Alamofire 发送三个数组帖子时出现错误?的主要内容,如果未能解决你的问题,请参考以下文章

用 alamofire 快速发送获取请求

Swift - 使用 alamofire 发布请求

Alamofire 不发送当前标头(swift)

使用 Alamofire 为参数发送“Null”值

当我在 Alamofire 中使用 UserDefaults.standard.object 时,它显示“调用中的额外参数”错误

调试 Alamofire 请求