Android:Retrofit 2从XML获取JSON值

时间:2017-01-25 04:26:36

标签: java android json xml retrofit

我正在使用 Retrofit 2.1.0 。 XML中的返回是完全不同的。 JSON放在XML中。我已经搜索了几个小时,但仍然不知道如何检索JSON值。

XML:

<string xmlns="http://www.something.com/">
[{"ReturnOK":"OK","Fullname":"Micheal","Userid":"4","strAppID":"9A380FFEACC444E8BE1E616F72A573C0","Phoneno":"1234567890"}]
</string>

改造客户:

public static Retrofit getManager() {
    if (retrofit == null) {
        retrofit = new Retrofit.Builder()
                .baseUrl(Constants.HTTP.BASE_URL)
                .client(new OkHttpClient())
                .addConverterFactory(SimpleXmlConverterFactory.create())
                .build();
    }
    return retrofit;
}

登录界面:

public interface LoginService {

    @GET(Constants.LOGIN.LOGIN_URL)
    Call<XMLString> doLogin(@Query(Constants.LOGIN.strAppID) String strAppID,
                        @Query(Constants.LOGIN.uname) String uname,
                        @Query(Constants.LOGIN.upassword) String upassword);
}

XMLString:

@Root(name="string", strict = false)
public class XMLString {

    private String reponse;


    public String getReponse() {
        return reponse;
    }

    public void setReponse(String reponse) {
        this.reponse = reponse;
    }
}

方法:

 private void loginProcess(String username, String password){

        LoginService endPoints = mManager.getManager().create(LoginService.class);
        Call<XMLString> call = endPoints.doLogin("1", username, password);
        call.enqueue(new Callback<XMLString>() {
            @Override
            public void onResponse(Call<XMLString> call, Response<XMLString> response) {
                if (response.isSuccessful()) {

                    XMLString xmlString = null;
                    try {
                        xmlString = call.execute().body();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    XMLString FromResponse = response.body();

                    Toast.makeText(getActivity(), FromResponse.toString(), Toast.LENGTH_SHORT).show();

                }
            }

            @Override
            public void onFailure(Call<XMLString> call, Throwable t) {
                Utils.T(getActivity(), t.getMessage().toString());
            }
        });
      }

错误:

  

致命的例外:主要                     处理:app.test.com.junn,PID:12501                     java.lang.UnsupportedOperationException                         at java.util.Collections $ UnmodifiableCollection.add(Collections.java:1128)                         在app.test.com.junn.controller.RestManager.getManager(RestManager.java:29)                         在app.test.com.junn.ui.fragment.LoginDialogFragment.loginProcess(LoginDialogFragment.java:100)                         在app.test.com.junn.ui.fragment.LoginDialogFragment.onClick(LoginDialogFragment.java:83)                         在android.view.View.performClick(View.java:5610)                         在android.view.View $ PerformClick.run(View.java:22265)                         在android.os.Handler.handleCallback(Handler.java:751)                         在android.os.Handler.dispatchMessage(Handler.java:95)                         在android.os.Looper.loop(Looper.java:154)                         在android.app.ActivityThread.main(ActivityThread.java:6077)                         at java.lang.reflect.Method.invoke(Native Method)                         在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:865)                         在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

非常感谢任何帮助。

0 个答案:

没有答案