我通过“改造库”(例如alamofire)发送了我的android类,服务器可以解析成功 但是当我使用“ alamofire”时,服务器找不到我的参数,而我却报错了
我认为这是因为我在Java中发送了Body,并且迅速发送了参数,但它不像body
android示例
班级:
public class Car implements Serializable {
@SerializedName("strMobileNumber") //<--- serialize
private String strMobileNumber= "";
@SerializedName("strOfficialIMEI")
private String strOfficialIMEI= "";
// ... geter and setter...
改装终点:
@POST("/Rest/Login") // <== post
Call<Car> getLogin(@Body Car car); //// **<=== @BODY**
请求:
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
}
});
}
我为alamofire尝试了此操作,但服务器无法解析我的参数:
我的班级:
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
}
}
迅捷4.2 alamofire 4.7
答案 0 :(得分:2)
我认为Alamofire参数编码方法不合适,您可能需要安装URLEncoding.default
才能使用JSONEncoding.default
答案 1 :(得分:1)
您需要在API调用中进行两项更改:
JSONEncoding.default
["Content-Type":"application/json"]
URLEncoding.default用于在URL本身中传递数据时使用。如果要在正文中传递数据,则应使用JSONEncoding.default
标题的内容类型也有拼写错误。