我目前正在开发Android应用,我需要你的帮助。
当我尝试使用Volley支持的JsonObjectRequest
时,我收到错误:
com.android.volley.ParseError:org.json.JSONException:java.lang.String类型的值1无法转换为JSONObject
这是我的两个相关代码片段:
Receiver.java
public void sendNewInfo(String url, HashMap<String , String> params) {
JsonObjectRequest newInfoRequest = new JsonObjectRequest(Request.Method.POST, url, new JSONObject(params) , new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
//doing some fancy stuff here
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(newInfoFragment.getActivity(), "Error: " + error.getMessage(), Toast.LENGTH_LONG).show();
}
});
queue.add(newInfoRequest);
}
NewInfoFragment.java
public void onViewCreated(final View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Button btn = (Button) view.findViewById(R.id.btnSendeInfo);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText title = (EditText) view.findViewById(R.id.newInfoTitle);
EditText text = (EditText) view.findViewById(R.id.newInfoText);
HashMap<String , String> params = new HashMap<String , String>();
params.put("appkey", "123");
params.put("autor", ((NewInfo) getActivity()).getBenutzername());
params.put("titel", title.getText().toString());
params.put("text", text.getText().toString());
Receiver receiver = new Receiver(infofragment);
receiver.sendNewInfo("myurlstringhere", params);
}
});
}
有人有一个很好的解决方案或任何想法如何解决这个问题?
params
被发送到Receiver
,他无法将其解析为JsonObject
,但我不知道如何执行此操作。
修改 对于所有拥有相同错误的人,请重新检查您获得的JSON作为回复。如果它无效,Volley会抛出这个例外!