gpt4 book ai didi

android - HttpUrlConnection 与发布请求和参数作为 Json 对象 android

转载 作者:太空狗 更新时间:2023-10-29 15:10:35 27 4
gpt4 key购买 nike

您好,我正在开发小型 android 应用程序,我想在其中使用 HttpUrlConnection post 请求,并将参数作为 json 对象。但它对我不起作用我是通过以下方式做到的:

try 
{
URL url;
DataOutputStream printout;
DataInputStream input;
url = new URL ("https://abc.com");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.setDoInput (true);
urlConnection.setDoOutput (true);
urlConnection.setUseCaches (false);

urlConnection.setConnectTimeout(10000);
urlConnection.setReadTimeout(10000);

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

JSONObject jsonParam = new JSONObject();

JSONArray arr = new JSONArray();
arr.put("LNCf206KYa5b");
arr.put("oWdC0hnm1jjJ");
jsonParam.put("places", arr);
jsonParam.put("action", "Do");

printout = new DataOutputStream(urlConnection.getOutputStream ());
printout.writeUTF(URLEncoder.encode(jsonParam.toString(),"UTF-8"));
printout.flush ();
printout.close ();

int HttpResult =urlConnection.getResponseCode();

if(HttpResult ==HttpURLConnection.HTTP_OK){
BufferedReader br = new BufferedReader(new InputStreamReader(
urlConnection.getInputStream(),"utf-8"));
String line = null;

while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
br.close();

//System.out.println(""+sb.toString());

}else{
System.out.println(urlConnection.getResponseMessage());
}
} catch (MalformedURLException e) {

e.printStackTrace();
}
catch (IOException e) {

e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(urlConnection!=null)
urlConnection.disconnect();
}
}

它不提供任何响应代码或任何输出。难道我做错了什么。如何解决这个问题。需要帮忙。谢谢。

出现以下系统错误

06-07 09:55:58.171: W/System.err(4624): java.io.IOException: Received authentication challenge is null
06-07 09:55:58.171: W/System.err(4624): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.processAuthHeader(HttpURLConnectionImpl.java:1153)
06-07 09:55:58.171: W/System.err(4624): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.processResponseHeaders(HttpURLConnectionImpl.java:1095)
06-07 09:55:58.171: W/System.err(4624): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieveResponse(HttpURLConnectionImpl.java:1048)
06-07 09:55:58.171: W/System.err(4624): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:726)
06-07 09:55:58.179: W/System.err(4624): at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:121)
06-07 09:55:58.179: W/System.err(4624): at com.mobiotics.qcampaigns.data.operation.ProximityOperation.execute(ProximityOperation.java:187)
06-07 09:55:58.179: W/System.err(4624): at com.foxykeep.datadroid.service.RequestService.onHandleIntent(RequestService.java:145)
06-07 09:55:58.179: W/System.err(4624): at com.foxykeep.datadroid.service.MultiThreadedIntentService$IntentRunnable.run(MultiThreadedIntentService.java:170)

最佳答案

此错误是由于 401 响应代码而发生的。

您可以像这样检查第一个响应代码

int responsecode = response.getStatusLine().getStatusCode();

如果服务器回复 401,则抛出此异常。

401 的实际原因是您此时没有在预期的位置发送 OAuth 验证程序代码。

可以引用下面的代码

    String url = LoginUrl;
String resultstring = "";

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);

// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(5);
nameValuePairs.add(new BasicNameValuePair("j_username", username));
nameValuePairs.add(new BasicNameValuePair("j_password", password));

try {
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

HttpContext localContext = new BasicHttpContext();
localContext.setAttribute(ClientContext.COOKIE_STORE,
Util.cookieStore);

try {
HttpResponse response = httpclient.execute(httppost,
localContext);

int responsecode = response.getStatusLine().getStatusCode();
if (responsecode == 200) {

Util.responsecode = responsecode;
resultstring = "Success";
InputStream in = response.getEntity().getContent();
resultstring = Util.convertinputStreamToString(in);

} else if (responsecode == 401) {
Util.responsecode = responsecode;
}

} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

关于android - HttpUrlConnection 与发布请求和参数作为 Json 对象 android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16976240/

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