gpt4 book ai didi

android - 对 Android 上的 REST API 的 POST 请求未获取参数

转载 作者:搜寻专家 更新时间:2023-11-01 09:47:42 24 4
gpt4 key购买 nike

我正在构建一个在后端带有关联 REST API 的网络应用。

使用 django-rest-framework 制作的 API 正在运行,我可以从命令行执行以下操作:

$ http http://localhost:8000/API/api-token-auth/ username=ortho1 password=123456

HTTP/1.0 200 OK
Allow: POST, OPTIONS
Content-Type: application/json
Date: Wed, 11 May 2016 12:43:05 GMT
Server: WSGIServer/0.2 CPython/3.5.1+
Vary: Cookie
X-Frame-Options: SAMEORIGIN

{
"token": "4d6e32726e321448fc212242fc03a3fa84c80510"
}

但在我的 Android 应用程序中,我尝试执行以下操作:

protected String doInBackground(String... urls) {
// Starting the request
URL url;
HttpURLConnection urlConnection = null;
try {

url = new URL("http://10.0.2.2:8000/API/api-token-auth/");
urlConnection = (HttpURLConnection) url.openConnection();

/* optional request header */
urlConnection.setRequestProperty("Content-Type", "application/json");
urlConnection.setRequestProperty("Accept", "application/json");

/* for GET request */
urlConnection.setRequestMethod("POST");

String urlParameters =
"username=" + URLEncoder.encode("ortho1", "UTF-8") +
"&password=" + URLEncoder.encode("123456", "UTF-8");

urlConnection.setRequestProperty("Content-Length", "" +
Integer.toString(urlParameters.getBytes().length));

urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);

DataOutputStream wr = new DataOutputStream (
urlConnection.getOutputStream ());
wr.writeBytes (urlParameters);
wr.flush ();
wr.close ();

InputStream inputStream;
if (urlConnection.getResponseCode() == 200) { // 2xx code means success
inputStream = urlConnection.getInputStream();
} else {

inputStream = urlConnection.getErrorStream();

}

inputStream = new BufferedInputStream(inputStream);


String response = convertInputStreamToString(inputStream);

Log.i("Request", response);

return response;

} catch (Exception e) {

e.printStackTrace();
return null;

} finally {
if(urlConnection != null) {
urlConnection.disconnect();
}
}

}

private String convertInputStreamToString(InputStream inputStream) throws IOException {

BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(inputStream));

String line = "";
String result = "";

while((line = bufferedReader.readLine()) != null){
result += line;
}

/* Close Stream */
if(null!=inputStream){
inputStream.close();
}

return result;
}

我进入控制台作为服务器的响应:

{"detail":"JSON parse error - Expecting value: line 1 column 1 (char 0)"} 

作为结果。

我做错了什么?

最佳答案

尝试去掉这一行,

urlConnection.setRequestProperty("Content-Type", "application/json");


请注意,处理任何 REST API 的最佳库是 RETROFIT http://square.github.io/retrofit/

关于android - 对 Android 上的 REST API 的 POST 请求未获取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37163303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com