所以,大家好。我在连接到服务器时遇到了一些问题。我曾与Yandex API和VK.COM API合作过,我的方法还不错。但是现在我不能从服务器得到任何响应。我想,我做得不对。
所以网站是https://android-test.7g-demo.com我还有API规范文件。以下是我在其中关于POST请求的内容。
# POST /oauth/token
>
请求(应用程序/json; charset=utf-8)
>
头
Accept: application/json
身体
{
"username": "test@7glyphs.com",
"password": "Test123",
"grant_type": "password",
"client_id": "2",
"client_secret": "M1m2QgSdbRKWstTaVXlhdPotJ6WCC33rLLq3N6fK",
"scope": "*"
}
响应 200 (application/json; charset=UTF-8)
> < li>
车身
{"token_type":"Bearer","expires_in":31536000,"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjkyYzAyYTE5ZGM2MjdmZDFhZTdkMzFiN2FkZTI1ODBlMWNmYTMxMjQxOWQzZmI3ZDNhYThmOGU0NmFjOWJlMGExOWI5YWI2NjI0ZmVjNmFmIn0.eyJhdWQiOiIyIiwianRpIjoiOTJjMDJhMTlkYzYyN2ZkMWFlN2QzMWI3YWRlMjU4MGUxY2ZhMzEyNDE5ZDNmYjdkM2FhOGY4ZTQ2YWM5YmUwYTE5YjlhYjY2MjRmZWM2YWYiLCJpYXQiOjE1MDk0ODgyODgsIm5iZiI6MTUwOTQ4ODI4OCwiZXhwIjoxNTQxMDI0Mjg4LCJzdWIiOiIxIiwic2NvcGVzIjpbIioiXX0.HrbgI2aYhqZCx_IwmvK7Y14HkOy2GzEL03o6Cwc7flqlb3Ijw2m-YFffEb5f9wX9Meo83iU3VSbdgx1oDpuJj5z3zOt0Q_QDJPn-seNG5Y0ob-BvAaMojUZFgbgLfL_xcatmW3TABKbC3NcUrgNym1Ru8qyBMvgT-ZY6iPlN13srWEH8qmMn0vYMB9-YJjfdz5mBHs-Y35APy4-6DdxiD_vKbppDBZCS1Nm_XULfoA-7MBVh9VOK2hngFxtERjiCZNol1FrljLO30gNwg2bD4WRZeFMH0o3ws3tkpDSwcbE2pQE8JokVXGZ46cJQConTmPhQ-yuPtCkggiwobs_QEMPLrTlkQSyIjLHm24xXlNQ3DLbw4AcDiOCDLYcrT8-Ef-9zYpDIxiYPnej4Fi4OHFanvxdwz-X8zqH8E8JKrdEPKPwMTE_Xx7xzazjyZKJY6y2GvVkU1BnvMa4VL5naRdYMp6TWnvo5hQiCBLpQXAbyH-U396aex2Nr5RctHdl2eM8KVhIHlofqMobUjeXwo-N4frpsAxjOj2uOco8zymFYmIirpjOCwyIkxiiF0lwzA6GOXzFlu2P6uzCpjvKTo2ID0pAT3wsA0Qf7lpDB0NjQlR3MAar6hHIncnDOYrndF8aX20i0fLDQvnpFZa43-z7GOXMO5f8ctTPO7q4Cuoc","refresh_token":"def50200d653d332230e5fbb8d094ba6fc99b6186739fdee26bd256171d07885ffe6afee1eb53247fe6a32c93dd31e53256d103b694007c5ec5ef8aadef0db64a7a4f46103182decb35bbfc2d39232b02649ebc1a32183a7cf1d498cf4aec14a4adde3ee8d708400811bdf4bf3ae4c067088ecd2ea1e8300e3c8a7a70e0900e62436a80c45069cb0552a067b230d74bce29e80233a71f47d0d9f670a26f7f660a1f81d52c2980a79b07e909df7871f1a9b39feb53a9f27e20599b5e66121c6866e91bf653fd78321ca6ad495e72ecb228386894375ec6ad5e200d8e9f1cc0df5d86b190214990ccbbe01bacc09114eebd70365f0d1f8a6932e2408deda013e160516d70b3aa209b7f5c9213ab58c3627dd700605a689ac8408d9e8f12bf3d21034441f22df1318d5a6cc011c776c92a41b6faec2497e3758f52c3bf288098db094a929ecfdf69a8dab6f693e97b7ba1afa1b5e25ab46e9b85314fc7ba78f6f5a60117d4e"}
但我不知道该怎么做。我写了这段代码:
@Override
protected Void doInBackground(Void... params) {
try {
URL url = new URL("https://android-test.7g-demo.com/?api.php");
HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
urlConnection.setRequestProperty("Content-Type", "application/json");
urlConnection.setRequestMethod("POST");
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
urlConnection.connect();
JSONObject jo = new JSONObject();
jo.put("username", "test@7glyphs.com");
jo.put("client_id", 2);
jo.put("password", "Test123");
BufferedOutputStream bos = new BufferedOutputStream(urlConnection.getOutputStream());
bos.write(jo.toString().getBytes());
String result = urlConnection.getResponseMessage();
Log.d("", "server response: " + result);
} catch (JSONException | IOException e) {
e.printStackTrace();
}
return null;
}
但我并没有收到服务器的回复。也许我应该把令牌放在哪里?或者应该为oauth请求使用任何库?或者我的代码应该换一种方式?谢谢你的回答。
最好和最简单的方法是使用改造而不是简单的任务
http://square.github.io/retrofit/
问题内容: 当我从HttpPost中使用setHeader设置“ Authorization”标头时,主机名将从请求中消失,并且始终返回错误400(错误请求)。相同的代码在纯Java(没有android)上可以正常工作,并且当我在android上删除设置“ Authorization”标头时也可以正常工作,但是我需要授权。这是一个代码(域已更改): 方法getB64Auth()返回使用“ Base
客户端通过按附录B使用“application/x-www-form-urlencoded”格式向授权端点URI的查询部分添加下列参数构造请求URI: response_type 必需的。值必须设置为“token”。 client_id 必需的。如2.2节所述的客户端标识。 redirect_uri 可选的。如3.1.2节所述。 scope 可选的。如3.3节所述的访问请求的范围。 state 推
客户端通过按附录B使用“application/x-www-form-urlencoded”格式向授权端点URI的查询部分添加下列参数构造请求URI: response_type 必需的。值必须被设置为“code”。 client_id 必需的。如2.2节所述的客户端标识。 redirect_uri 可选的。如3.1.2节所述。 scope 可选的。如3.3节所述的访问请求的范围。 state 推
由于客户端身份验证被用作授权许可,所以不需要其他授权请求。
客户端获得资源所有者凭据所通过的方式超出了本规范的范围。一旦获得访问令牌,客户端必须丢弃凭据。
问题内容: 我想向需要身份验证的服务器生成POST请求。我尝试使用以下方法: 但服务器未收到授权数据。应该添加授权数据的行如下: 和线 还抛出IOException。 无论如何,如果有人可以建议对以上逻辑进行任何修复,以启用带有UrlConnection的POST授权,我将非常感激。 但是显然,它不能像预期的那样起作用,尽管如果将相同的逻辑用于GET请求,则一切正常。 问题答案: 这里有一个很好的