Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
swift 4-Alamofire和改装之间的差异(车身等级后)_Swift_Alamofire - Fatal编程技术网

swift 4-Alamofire和改装之间的差异(车身等级后)

swift 4-Alamofire和改装之间的差异(车身等级后),swift,alamofire,Swift,Alamofire,我通过“改造库”(比如alamofire)发送了我的android类,服务器可以成功解析它 但当我使用“alamofire”时,服务器找不到我的参数,我得到了零 我想这是因为我用java发送Body,用swift发送参数,它不像Body android示例 类别: public class Car implements Serializable { @SerializedName("strMobileNumber") //<--- serialize private String str

我通过“改造库”(比如alamofire)发送了我的android类,服务器可以成功解析它 但当我使用“alamofire”时,服务器找不到我的参数,我得到了零

我想这是因为我用java发送Body,用swift发送参数,它不像Body

android示例

类别:

public class Car implements Serializable {

@SerializedName("strMobileNumber") //<--- serialize
private String strMobileNumber= "";
@SerializedName("strOfficialIMEI")
private String strOfficialIMEI= "";
// ... geter and setter...
我的请求:

Alamofire.request(Values.connection.url("Login") , method: .post, parameters: params, encoding: URLEncoding.default, headers: ["Content-Type":"applocation/json"]).responseJSON { (response) in
       switch response.result {
       case .success(let json):
           let dict = json as? [String: Any]
           print(dict!["<KEY>"])
           break
       case .failure(let error):
           print(error)
           break
       }
   }
Alamofire.request(Values.connection.url(“Login”)、方法:.post、参数:params、编码:URLEncoding.default、头:[“Content Type”:“applocation/json”]).responseJSON{(response)in
开关响应。结果{
case.success(让json):
让dict=json为?[String:Any]
打印(dict![“”])
打破
案例。失败(let错误):
打印(错误)
打破
}
}
swift 4.2
alamofire 4.7

我认为alamofire参数编码方法不正确您可能需要使用
URLEncoding.default
来使用
JSONEncoding.default
我认为alamofire参数编码方法不正确您可能需要使用
URLEncoding.default
来使用
JSONEncoding.default
有2个在API调用中需要进行的更改:

  • 将编码方法更改为
    JSONEncoding.default
  • 将标题值更改为
    [“内容类型”:“应用程序/json”]
当我们在URL本身中传递数据时,使用URLEncoding.default。如果我们想在body中传递数据,我们应该使用
jsonecoding.default


标题的内容类型也有拼写错误。

在API调用中需要进行两项更改:

  • 将编码方法更改为
    JSONEncoding.default
  • 将标题值更改为
    [“内容类型”:“应用程序/json”]
当我们在URL本身中传递数据时,使用URLEncoding.default。如果我们想在body中传递数据,我们应该使用
jsonecoding.default


标题的内容类型中也存在拼写错误。

能否将整个响应打印为not let dict=json?[String:Any]print(dict![“”])您能否将整个响应打印为不允许dict=json的格式?[String:Any]打印(dict![“”])Do
let request=Alamofire.request(…);打印(“请求:\(请求)”
request.responseJSON{…}`然后您应该能够看到出了什么问题。参数放在哪里:主体、URL、标题,以及它们的格式(JSON编码等)。参数变量如何?Do
let request=Alamofire.request(…);打印(“请求:\(请求)”
request.responseJSON{…}`然后您应该能够看到出了什么问题。参数放在哪里:Body、url、header,以及它们的格式(JSON编码等)。param变量是什么?
private void postRequest(Car car) {
    ApiService apiService = ApiClient.getClient().create(ApiService.class);
    Call<Car> call = apiService.getLogin(car);
    call.enqueue(new Callback<Car>() {
        @Override
        public void onResponse(Call<Car> call, Response<Car> response) {
            stopLoading();
            if (response.isSuccessful() && response.body() != null) {
                switch (response.body().getResult()) {
                    case "1":
                        //do somrthing
                        break;
                    case "0":
                        //do somrthing
                        break;
                    default:
                        //do somrthing
                        break;
                }
            } else {
                //do somrthing
            }
        }

        @Override
        public void onFailure(Call<Car> call, Throwable t) {
           //do somrthing
        }
    });
}
class User: Codable {
    private var strMobileNumber: String
    private var strOfficialIMEI : String

    init(strMobileNumber: String, strOfficialIMEI: String) {
       self.strMobileNumber = strMobileNumber
       self.strOfficialIMEI = strOfficialIMEI
    }

    func toParams () -> [String : Any] {
        return [
            "strMobileNumber" : self.strMobileNumber as Any,
            "strOfficialIMEI" : self.strOfficialIMEI as Any
        ]
    }
}
Alamofire.request(Values.connection.url("Login") , method: .post, parameters: params, encoding: URLEncoding.default, headers: ["Content-Type":"applocation/json"]).responseJSON { (response) in
       switch response.result {
       case .success(let json):
           let dict = json as? [String: Any]
           print(dict!["<KEY>"])
           break
       case .failure(let error):
           print(error)
           break
       }
   }