- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 Json 解析的新手。我正在尝试使用 JsonArrayRequest
读取 json 数据,但我对发送参数和使用 POST 方法有点困惑。在 JsonObjectRequest
的情况下,我可以发送方法类型、url、 params 但在 JsonArrayRequest
中如何发送用户名和密码等参数并使用 POST 方法。请帮助我。这是我编写的代码。
final JsonArrayRequest jsonObjReq = new JsonArrayRequest(MySingleton.getInstance().getDOWNLOAD_SERVICES_URL(), new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
try {
if(response==null) {
pDialog.hide();
}
for (int i = 0; i < response.length(); i++) {
jresponse = response.getJSONObject(i);
}
//String service_response = response.getString("SvcTypeDsc");
Toast.makeText(getActivity().getApplicationContext(), "services" + jresponse, Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
Log.d("soservices", "sos" + e.getMessage());
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("Login request", "Error: " + error.getMessage());
Log.d("Volley Error:", "Volley Error:" + error.getMessage());
Toast.makeText(getActivity(), "Unable to connect to server, try again later", Toast.LENGTH_LONG).show();
pDialog.hide();
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("uniquesessiontokenid","39676161-b890-4d10-8c96-7aa3d9724119");
params.put("loginname", userDet.getSAID());
params.put("password", "23295");
return super.getParams();
}
@Override
public int getMethod() {
try {
getParams();
} catch (AuthFailureError authFailureError) {
authFailureError.printStackTrace();
}
return super.getMethod();
}
};
AppController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj);
}
我的 json 数据是这样的:
{
"username":"rushi",
"firstname": "abc",
},
{
"username": "xyz",
"firstname": "vxa",
},
参数没有被发送。请帮我解决这个问题。提前谢谢你。
最佳答案
这解决了我在使用 JsonArrayRequest 和 POST 方法时传递参数的问题。
Volley.newRequestQueue(getActivity())
.add(new JsonRequest<JSONArray>(Request.Method.POST,
MySingleton.getInstance().getDOWNLOAD_SERVICES_URL(),
jsonobj.toString(),
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray jsonArray) {
Log.d("response", "res-rec is" + jsonArray);
if (jsonArray == null) {
pDialog.dismiss();
Snackbar.make(myview, "No services found", Snackbar.LENGTH_LONG).show();
} else {
for (int i = 0; i < jsonArray.length(); i++) {
try {
pDialog.dismiss();
JSONObject jsonObject = jsonArray.getJSONObject(i);
String desc = jsonObject.getString("SvcTypeDsc");
String image_url = jsonObject.getString("ThumbnailUrl");
// al_ImageUrls.add(image_url);
al_list_of_services.add(desc);
ad_servicesadapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, al_list_of_services);
lv_webservicesList.setAdapter(ad_servicesadapter);
Log.d("imageurls", "imagesurl " + image_url);
Log.d("services-list", "list is " + desc + " " + i);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
VolleyLog.d("Login request", "Error: " + volleyError.getMessage());
Log.d("Volley Error:", "Volley Error:" + volleyError.getMessage());
Toast.makeText(getActivity(), "Unable to connect to server, try again later", Toast.LENGTH_LONG).show();
pDialog.dismiss();
}
})
{
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
// params.put("uniquesessiontokenid", "39676161-b890-4d10-8c96-7aa3d9724119");
params.put("uniquesessiontokenid", userDet.getSessionToken());
params.put("said", userDet.getSAID());
params.put("SOId", "23295");
return super.getParams();
}
@Override
protected Response<JSONArray> parseNetworkResponse(NetworkResponse networkResponse) {
try {
String jsonString = new String(networkResponse.data,
HttpHeaderParser
.parseCharset(networkResponse.headers));
return Response.success(new JSONArray(jsonString),
HttpHeaderParser
.parseCacheHeaders(networkResponse));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JSONException je) {
return Response.error(new ParseError(je));
}
// return null;
}
}
);
关于android - 在 Volley 中使用 JsonArrayRequest 时如何发布请求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33014210/
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我制作 jsonArrayRequest 的函数内容是: JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Me
我试图根据我发送的数据从服务器获取响应,我能够从服务器获取响应,但服务器似乎没有接收 getParams() 中的值。 String url = "myUrl"; Req
我已经尝试使用普通的 JSONArrayRequests 和 StringRequests,直到现在一切都很好。我想发送一个带有 POST 参数的 JSONArrayRequest 以从脚本中获取一些
我是 Volley 的新手,我正在尝试让 Post 请求与 一起工作 JsonArrayRequest 从我在 stackoverflow 上找到的许多答案中,我尝试如下 - private
请帮助我(我不明白问题是什么。它给出了一个错误和文本“ERROR”,我在日志中找不到任何内容。我是初学者,目前正在学习 android 开发。 RequestQueue requestQueu
我正在创建类,该类应使用带有特定参数的 volley 发送 JSONArrayRequest,然后找到等于这些参数的 mysql 行并将其发回。我编写了简单的 mysql 函数来接收 POST 参数和
我从向我的服务器发送参数时收到一个错误,好像我的参数根本没有传递到我的服务器...我得到的是: D/Searching: Error: org.json.JSONException: Value {"
我已经尝试了一些关于将帖子从 JsonArrayRequest volley 发送到服务器的示例,但它不起作用并且日志中没有错误.. 所以当我在服务器中调用一个帖子时,帖子无法获取并且在不调用帖子时显
我正在尝试使用 volley 发出 post 请求。 请求参数是一个json数组。 以下是我的请求参数 [ "Type", { "User": "email", "password": "
我知道使用 JsonArrayRequest 的 POST 请求在 Volley 中不可用,但我看到这篇文章 here那谈到了添加一个构造函数来处理这个问题。他们的实现是这样的: public Jso
我是一名编程学生,正在构建一个使用 api json url 的 Android 应用程序,但我找不到适合 JsonArrayRequest 的构造函数 这是错误: C:\Users\jerma\An
我是 Json 解析的新手。我正在尝试使用 JsonArrayRequest 读取 json 数据,但我对发送参数和使用 POST 方法有点困惑。在 JsonObjectRequest 的情况下,我可
所以我看到了几个 JsonObjectRequests 的例子,其中添加了这段代码 @Override public String getBodyContentType
我正在尝试在 fragment 中调用带有 spinner.setOnItemSelectedListener 的 JsonArrayRequest。但它在这一行给我错误 RequestQueue r
我正在使用 Volley与 API 互动.我需要将带有参数的发布请求发送到返回 JSONArray 的服务. 我正在覆盖方法 protected Map getParams()但它不起作用: Json
我需要使用 JSONObject 发出请求,如下所示: { 'LangIDs': [1, 2], 'GenreIDs': [4], 'LowPrice': 0, 'Hi
使用android studio,我尝试使用JsonArrayRequest和Post方法获取JsonArray,但它不起作用(POST方法发送一个空字符串),所以我使用了StringRequest,
我正在使用 Volley 访问 REST API。我的大多数调用都返回 200,如果它返回 400、401 或 409,我将返回一个 json 响应,其中包含关于错误信息的不同错误消息。我一直在查看
从昨天开始我就一直遇到这个问题,从我的服务器获取数据。我在 POSTMAN 中测试我的 php 代码并将格式更改为 JSON,我什至在 JSONLint 上测试它并且它返回有效的 json。我注意到它
我是一名优秀的程序员,十分优秀!