我正在使用 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)
非常感谢任何帮助。