- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 Volley 发送请求,但我不知道如何让它工作。
我需要发送一个以 JSON 编码数据作为正文的 POST 请求,但在尝试了数小时不同的方法后,我仍然无法让它工作。
这是我当前的请求代码:
User user = User.getUser(context);
String account = user.getUserAccount();
String degreeCode = user.getDegreeCode();
final JSONObject body = new JSONObject();
try {
body.put(NEWS_KEY, 0);
body.put(NEWS_DEGREE, degreeCode);
body.put(NEWS_COORDINATION, 0);
body.put(NEWS_DIVISION, 0);
body.put(NEWS_ACCOUNT, account);
} catch (JSONException e) {
e.printStackTrace();
}
StringRequest request = new StringRequest(Request.Method.POST, GET_NEWS, new Response.Listener<JSONObject>() {
@Override
public void onResponse(String response) {
Log.i(TAG, response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Error: " + getMessage(error, context));
Toast.makeText(context, getMessage(error, context), Toast.LENGTH_SHORT).show();
}
}) {
@Override
public byte[] getBody() throws AuthFailureError {
return body.toString().getBytes();
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type","application/json");
return headers;
}
};
queue.add(request);
但是这段代码总是返回“Bad request error”
我尝试过的一些事情:
getParams()
方法而不是 getBody()
。 (没用)JSONObjectRequest
,主体在构造函数中。这一个有效,但因为我的网络服务返回一个 String
值,所以我总是得到一个 ParseError
。这就是我使用 StringRequest
的原因。非常感谢任何帮助。
最佳答案
正如在 njzk2's comment 中提到的那样,最简单的方法是改写 getBodyContentType()
。覆盖 getHeaders()
也可能有效,但您需要放置所有必要的 header ,而不仅仅是 Content-Type
,因为您基本上覆盖了原始方法设置的 header 。
您的代码应如下所示:
StringRequest request = new StringRequest(...) {
@Override
public byte[] getBody() throws AuthFailureError {
return body.toString().getBytes();
}
@Override
public String getBodyContentType() {
return "application/json";
}
};
关于android - 带有 JSON 正文的 StringRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27451094/
我想使用 Volley StringRequest 将 base64 编码的图像和一些文本上传到我的网络服务器。 当我直接尝试发送 base64 字符串时,我得到“意外响应代码 503”,但是当我压缩
我有一些从谷歌应用程序脚本接收数据的方法,但为所有方法放置相同的代码有点长。 例如,这是我的 checkIn 方法,但我需要创建 checkOut 方法或 UpdateReservation 来从 g
我正在使用 android volley ,我想用 stringRequest 发送发布数据。但参数不发送到服务器。这是我的代码: StringRequest jsonObjReq =
我是 Android 的新手,我希望得到有关 StringRequestVolley 的帮助。在我的项目中,我将调用多个 API。为此,我创建了一个名为 ProcessAPIRequest 的方法。为
我正在尝试使用 Volley 发送请求,但我不知道如何让它工作。 我需要发送一个以 JSON 编码数据作为正文的 POST 请求,但在尝试了数小时不同的方法后,我仍然无法让它工作。 这是我当前的请求代
我对应该使用哪个感到有点困惑。 尽管其响应是 JSON 字符串,但该 API 试图接受常规文本发布参数。 我应该使用哪个? 最佳答案 为此,您可以使用 JSON 对象请求。 关于android - 我
我用过this简单的获取请求代码 final StringBuilder result = new StringBuilder(); RequestQueue queue = Voll
我正在创建一个按钮,单击该按钮会调用 checkUserName 方法,该方法会搜索数据库并告知用户名是否可用。 URL_CHECK_USERNAME 响应“用户名可用”或“用户名不可用”。
我已经放置了这个依赖项使用 volley 并从受尊重的 URl 获取 JSON 数据:- **compile 'me.neavo:volley:2014.12.09'** 放置此后没有得到 Strin
我正在尝试从 Android 发出 POST 请求以在我的 phpmyadmin 中插入一些信息。 我在用什么 Slim 与存储在 phpmyadmin 的数据库建立连接和查询。 XAMPP 模拟本地
我的 Volley 代码曾经像这样正常工作: StringRequest stringRequest = new StringRequest(method, URL, listener, errorL
下面的代码将实现一个简单的在线登录系统。 php 脚本路径在常量 authenticationURL 中定义(MainActivity.java 中的第 34 行)。它已经过 Postman 测试,可
api 调用发送了正确的响应,但是当我从 Volley StringRequest 得到响应时,撇号符号更改为不可读的字符。 我用来进行 api 调用的代码是这样的: private fun make
我已经能够使用 volley 从 url 获取字符串。该字符串现在在 TextView 中显示为一个 block 。但我希望能够在单独的 TextView 中显示这些数据。我怎样才能做到这一点? 也许
我正在使用以下代码在我服务器上的 sql 数据库中注册用户。 package com.cc.envoycc.activity; import android.app.Activity; import
我目前正在 fragment 内处理 ListView 。它工作得很好,但我需要使用用户的用户名过滤 ListView 上的数据。我如何能够使用请求传递“用户名”?任何帮助、建议和提示将不胜感激。预先
我试图通过在 Android 中使用 StringRequest 以及 POST 方法来获取 JSONArray。 php脚本的写法如下: $statement = mysqli_prepare($c
我有以下代码可以调用和接收 xml。 StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
当我在调试器中运行该方法时,数据按预期显示,但是每当我尝试使用它执行任何操作时,parentObject 的值都会返回为 null。 我只是想从服务器获取响应并将其存储为 JSONObject 以便在
我正在使用 Android Volley 进行网络通话。一般我使用JSONRequest接收json数据,然后使用GSON将它们转换成对象。 new Response.Listener() {
我是一名优秀的程序员,十分优秀!