Android Retrofit POST API调用替换字符串值

时间:2017-04-04 12:24:19

标签: android retrofit2 url-encoding

我正在使用改装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

任何人都可以在我错的地方冒犯我吗?请帮帮我..提前致谢。

4 个答案:

答案 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