我正在使用改装2.1.0
compile 'com.google.code.gson:gson:2.7'
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
在API接口中,
@FormUrlEncoded
@POST("employeerest")
Call<EmployeeInfo> getEmployeeInfo(@Field("ActivationCode") String strActivationCode,
@Field("Data") String strjsonData);
问题是改造改变 strjsonData 的字符串值。
实际值是: ODk0MTUxODc3ODk2ODI2OURs2YIUf6zveGI5P + bQR4phRk34OdAxZTuOI97tgzDekU7jTWfVAqjEex8zHn9xgOA1UxA3CCV7VXmAzrU1z4T5PyS + czPKCAd2HbdsNdvorHBQEZwjpADdbVY1M5xPrNWb3L910MuHjex6NSVoFFdxn3fAlwRtYQbseHS3GZCIssyv4g ==
虽然改造替换其值设置为:的 ODk0MTUxODc3ODk2ODI2OURs2YIUf6zveGI5P%2BbQR4phRk34OdAxZTuOI97tgzDekU7jTWfVAqjE%0Aex8zHn9xgOA1UxA3CCV7VXmAzrU1z4T5PyS%2BczPKCAd2HbdsNdvorHBQEZwjpADdbVY1M5xPrNWb%0A3L910MuHjex6NSVoFFdxn3fAlwRtYQbseHS3GZCIssyv4g%3D%3D%0A
任何人都可以在我错的地方冒犯我吗?请帮帮我..提前致谢。
答案 0 :(得分:3)
最后解决问题。
从我这边创建namevalue对的列表,而不是Retrofitside并发送它。
List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>();
nameValuePair.add(new BasicNameValuePair("ActivationCode",
strActivationCode));
nameValuePair.add(new BasicNameValuePair("Data", base64));
Call<EmployeeInfo> call = null;
try {
call = NetworkConstants.getNetworkObject().loginUser(getQuery(nameValuePair));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
private String getQuery(List<NameValuePair> params)
throws UnsupportedEncodingException {
StringBuilder result = new StringBuilder();
boolean first = true;
for (NameValuePair pair : params) {
if (first) {
first = false;
} else {
result.append("&");
}
result.append(pair.getName());
result.append("=");
result.append(pair.getValue());
}
return result.toString();
}
并在界面
@POST("myapi")
Call<EmployeeInfo> loginUser(@Body String body);
所以它不会替换字符串。
答案 1 :(得分:0)
@FormUrlEncoded注释指示将Retrofit改为UrlEncode参数。删除它,它应该传递值不变
答案 2 :(得分:0)
只需删除此@FormUrlEncoded
,就可以了
答案 3 :(得分:0)
你应该参考这个链接来帮助
https://futurestud.io/tutorials/retrofit-send-data-form-urlencoded-using-fieldmap
使用@Fieldmap