2011-07-27 2 views
6

je dois ajouter tête de requête non standard qui a le format comme celui-ci: (X-MMP-Params: fs = 640x0). J'utilise HTTPClient voici le code:Comment ajouter l'en-tête de demande à la demande HttpClient?

HttpClient client = new DefaultHttpClient(); 
String getURL = "http://example.com"; 
HttpGet get = new HttpGet(getURL); 
get.setHeader("X-MMP-Params","fs=640x0"); // I set my request header right here 
HttpResponse responseGet = client.execute(get); 

Est-ce la bonne façon de le faire?

+0

Ça marche? Pour tester, vous pouvez définir l'en-tête 'User-Agent' et télécharger une page qui montre un agent utilisateur récupéré par le serveur (ou créer votre propre page PHP). Si l'agent utilisateur indiqué est ce que vous avez défini, cette méthode fonctionne. –

+3

Pour ceux qui errent sur cela et penser: « Eh bien, est-ce la bonne façon ?! », la réponse est oui. Cela fonctionne très bien. – PFranchise

+0

Êtes-vous conscient du fait que vous [ne devriez pas utiliser 'HttpClient' plus] (http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http- client); au moins pas pour les projets Android. – toKrause

Répondre

0

La demande get est faite avec HttpGet:

public static InputStream getInputStreamFromUrl(String url) { 
    InputStream content = null; 
    try { 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpResponse response = httpclient.execute(new HttpGet(url)); 
    content = response.getEntity().getContent(); 
    } catch (Exception e) { 
    Log.("[GET REQUEST]", "Network exception", e); 
    } 
    return content; 
} 

La demande POST est faite avec HttpPost:

public void postData() { 
    // Create a new HttpClient and Post Header 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php"); 

    try { 
     // Add your data 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
     nameValuePairs.add(new BasicNameValuePair("id", "12345")); 
     nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!")); 
     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 
    } 
} 

Je déconseillons fortement personnellement pour essayer Retrofit à façon suivante

public interface YourUsersApi { 

    //You can use rx.java for sophisticated composition of requests 
    @GET("https://stackoverflow.com/users/{user}") 
    public Observable<SomeUserModel> fetchUser(@Path("user") String user); 

    //or you can just get your model if you use json api 
    @GET("https://stackoverflow.com/users/{user}") 
    public SomeUserModel fetchUser(@Path("user") String user); 

    //or if there are some special cases you can process your response manually 
    @GET("https://stackoverflow.com/users/{user}") 
    public Response fetchUser(@Path("user") String user); 

} 
+0

Je ne vois pas les en-têtes !!! –

Questions connexes