簡體   English   中英

http 發布請求 android

[英]http post request for android

我想在 java 中為 android 發送 POST 請求。

我使用此代碼:

    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("myUrl");

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("artist", "Amy Macdonald"));
        nameValuePairs.add(new BasicNameValuePair("title", "Don't Tell Me That It's Over"));
        nameValuePairs.add(new BasicNameValuePair("album", "Don't Tell Me That It's Over"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }

問題是當我使用:

HttpResponse response = httpclient.execute(httppost);

我得到了一個例外,這個網絡服務肯定可以工作,

Javadoc 狀態

用作 HTTP 消息的元素的名稱/值對參數。

 parameter               = attribute "=" value
 attribute               = token
 value                   = token | quoted-string

由於 HTTP POST 沒有 append 屬性到 URL(據說),它以實體主體的形式進行。 您可以有一個簡單的基於字符串的實體或基於 MIME 的實體主體。

NameValuePair已經實現了一個名為BasicNameValuePair的類(想想它像 HTTP 參數)你提供一個參數和一個值。

您要發布到什么計划? http 還是 https? 您是否使用ClientConnectionManagerHttpParams正確設置了客戶端? 您的日志中有哪些異常?

我看到的一些用於發布數據的代碼之間的唯一區別(假設您的客戶端設置正確)是我在執行方法中使用 httpContext ,如下所示:

httpPost = new HttpPost(urlString);
httpPost.setEntity(new UrlEncodedFormEntity(nvps));
response = httpClient.execute(httpPost, httpContext);
statusCode = response.getStatusLine().getStatusCode();

在構造函數中設置上下文的位置

httpContext = new BasicHttpContext();
httpContext.setAttribute(ClientContext.COOKIE_STORE, new BasicCookieStore());

如果您使用的是 https,則需要使用更多信息設置客戶端,以便它可以處理密鑰庫要求和連接的其他安全方面。

檢查這個帖子

http://www.softwarepassion.com/android-series-get-post-and-multipart-post-requests/

它有所有類型: httppost、httpget、httppost 和文件上傳....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM