2010-11-22 9 views
3

HTTP認証ヘッダーの送信方法がわかりません。AndroidでHTTP基本認証ヘッダーを送信するにはどうすればよいですか?

リクエストを受け取るために次のHttpClientを持っていますが、どのようにリクエストを送信できるかわかりません。

public class RestClient extends AsyncTask<String, Void, JSONObject> { 
     private String convertStreamToString(InputStream is) { 
      /* 
      * To convert the InputStream to String we use the 
      * BufferedReader.readLine() method. We iterate until the 
      * BufferedReader return null which means there's no more data to 
      * read. Each line will appended to a StringBuilder and returned as 
      * String. 
      */ 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
      StringBuilder sb = new StringBuilder(); 

      String line = null; 
      try { 
       while ((line = reader.readLine()) != null) { 
        sb.append(line + "\n"); 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } finally { 
       try { 
        is.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 

      return sb.toString(); 
     } 

     /* 
     * This is a test function which will connects to a given rest service 
     * and prints it's response to Android Log with labels "Praeda". 
     */ 
     public JSONObject connect(String url) { 
      HttpClient httpclient = new DefaultHttpClient(); 

      // Prepare a request object 
      HttpGet httpget = new HttpGet(url); 

      // Execute the request 
      HttpResponse response; 
      try { 
       response = httpclient.execute(httpget); 
       // Examine the response status 
       Log.i("Praeda", response.getStatusLine().toString()); 

       // Get hold of the response entity 
       HttpEntity entity = response.getEntity(); 

       if (entity != null) { 

        // A Simple JSON Response Read 
        InputStream instream = entity.getContent(); 
        String result = convertStreamToString(instream); 

        // A Simple JSONObject Creation 
        JSONObject json = new JSONObject(result); 

        // Closing the input stream will trigger connection release 
        instream.close(); 

        return json; 
       } 

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

      return null; 
     } 

     @Override 
     protected JSONObject doInBackground(String... urls) { 
      return connect(urls[0]); 
     } 

     @Override 
     protected void onPostExecute(JSONObject json) { 

     } 
    } 

答えて

6

これはHttpClientをdocumentationに、そのsample codeで覆われています。

+10

ドキュメントのいくつかの方法はアンドロイドプラットフォームにはありません。 –

0

たぶんのHttpClientのドキュメントは助けることができる:link

+2

FYI、あなたのリンクはHttpClient 3.x用で、AndroidにはHttpClient 4.xが組み込まれています。 – CommonsWare

0

Androidは代わりに、3.xのののHttpClient 4.0.xのをコンパイルするので、スニペットの下にあなたの参考のためです。

if (authState.getAuthScheme() == null) { 
     AuthScope authScope = new Au HttpRequestInterceptor preemptiveAuth = new HttpRequestInterceptor() { 
    public void process(final HttpRequest request, final HttpContext context) throws HttpException, IOException { 
     AuthState authState = (AuthState) context.getAttribute(ClientContext.TARGET_AUTH_STATE); 
     CredentialsProvider credsProvider = (CredentialsProvider) context.getAttribute(
       ClientContext.CREDS_PROVIDER); 
     HttpHost targetHost = (HttpHost) context.getAttribute(ExecutionContext.HTTP_TARGET_HOST);thScope(targetHost.getHostName(), targetHost.getPort()); 
     Credentials creds = credsProvider.getCredentials(authScope); 
     if (creds != null) { 
      authState.setAuthScheme(new BasicScheme()); 
      authState.setCredentials(creds); 
     } 
    } 
}  
}; 
DefaultHttpClient httpclient = new DefaultHttpClient(); 
httpclient.addRequestInterceptor(preemptiveAuth, 0); 
関連する問題