我正在尝试使用HttpUrlConnection发送帖子。一切看起来都很好,但它保持返回400,就好像参数不是在DataOutputStream中发送的,或者是以错误的方式发送的。
public String doDBAuth(String dbURL, String dbUser, String dbPassword) throws IOException {
HttpURLConnection connection = null;
String res = null;
try {
BufferedReader reader;
StringBuffer buffer;
URL url = new URL(dbURL + "/auth");
connection = (HttpURLConnection) url.openConnection();
String urlParameters = "username=actn-admin&password=Test@&cliend_id=admin-cli&grant_type=password";
byte[] postData = urlParameters.getBytes(StandardCharsets.UTF_8 );
int postDataLength = postData.length;
connection.setRequestMethod("POST");
connection.setReadTimeout(40000);
connection.setConnectTimeout(40000);
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestProperty("Content-Length", Integer.toString(postDataLength));
connection.setDoInput(true);
try (DataOutputStream wr = new DataOutputStream(connection.getOutputStream())) {
wr.writeBytes(urlParameters);
wr.flush();
}
int responseCode = connection.getResponseCode();
int status = connection.getResponseCode();
InputStream inputStream;
if (status == HttpURLConnection.HTTP_OK) {
inputStream = connection.getInputStream();
} else {
inputStream = connection.getErrorStream();
}
reader = new BufferedReader(new InputStreamReader(inputStream));
buffer = new StringBuffer();
String line = "";
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
res = buffer.toString();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return res;
}
这是返回的内容:
{"error":"unauthorized_client","error_description":"INVALID_CREDENTIALS: Invalid client credentials"}
这很奇怪,因为这个卷曲正常工作:
curl --location --request POST '<URL>/auth' \
> --header 'Content-Type: application/x-www-form-urlencoded' \
> --data-urlencode 'username=actn-admin' \
> --data-urlencode 'password=Test@' \
> --data-urlencode 'client_id=admin-cli' \
> --data-urlencode 'grant_type=password' -k
它会返回我想要的访问令牌
键和值需要进行URL编码(这是规范)。在您的示例中,将“Test@”替换为“Test@”就足够了。对于经得起未来考验的解决方案,您应该对所有键和值进行编码(例如,使用URLCoder)
我试图使用android HttpUrlConnection进行POST请求。首先,我从这里使用GET请求的示例: http://developer.android.com/training/basics/network-ops/connecting.html#http-客户 它工作得非常好(例如,我得到了google.com页面)。然后我做了一些更改以发出POST请求:更改POST上的请求方法:
本文向大家介绍浅谈Java HttpURLConnection请求方式,包括了浅谈Java HttpURLConnection请求方式的使用技巧和注意事项,需要的朋友参考一下 一)URL代理请求 该方式请求有两种代理方式。 方式一:使用该方式代理之后,之后的所有接口都会使用代理请求 方式二:适用于只有部分接口需要代理请求场景 二)无参数GET请求 方法解析: HttpGetUtils.doGe
主要内容:本节引言:,1.HttpURLConnection的介绍,2.HttpURLConnection的使用步骤,3.HttpURLConnection使用示例,4.Cookie问题的处理,5.使用HttpURLConnection发送PUT请求,本节小结:本节引言: 前面两节我们学习的都是一些概念性的东西,Http的协议以及协议头的一些东东,而本节我们 就要堆码了,而本节学习的是Android为我们提供的Http请求方式之一:HttpURLConnection, 除了这种,还有一种还有一种
我试图使用HttpURLConnection执行post请求,但不知道如何正确执行。 我可以使用以下代码成功地使用Android AsyncHttp客户端执行请求: 可以在台式机上使用curl执行相同的请求: 这两种方法都给了我来自服务器的预期响应。 现在我想使用HttpURLConntions执行相同的请求。问题是我不知道如何正确地执行它。我尝试过这样的事情: 如何正确地将与使用AsyncHtt
我试图写一个通用代码上传文件到任何服务器(多部分职位)。< br >我已经在我的代码和各种stackoverflow解决方案中尝试了不同的头和请求类型,但仍然无法上传任何文件。 我不断收到以下HTML消息作为响应: 400 BAD请求 如何在Android中编写一个通用代码将文件上传到服务器?< br > Android代码:< br > 用于测试文件上传的 PHP 代码:
问题内容: 我已经开发了一个Java代码,该代码使用URL和HttpUrlConnection将以下cURL转换为Java代码。卷曲是: 我已经编写了此代码,但是它始终会给HTTP代码400错误的请求。我找不到丢失的内容。 问题答案: 你的JSON不正确。代替 写 因此,JSONObject.toString()应该只为外部对象调用一次。 另一件事(可能不是你的问题,但我想提一下): 为确保不会遇