2016-12-02 3 views
0

Quelqu'un peut-il me dire comment puis-je obtenir la réponse de l'API en utilisant la méthode HttpHandler en donnant les paramètres d'en-tête? Voici mon HTTPHandler java recueil HSC Intégration API Android

package com.example.addvehicle; 
import android.util.Log; 
import android.widget.ListView; 
import java.io.BufferedInputStream; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.ProtocolException; 

import java.net.URL; 
public class HttpHandler { 
    private static final String TAG = HttpHandler.class.getSimpleName(); 



    public HttpHandler() { 
    } 

    public String makeServiceCall(String reqUrl) { 
     String response = null; 
     try{ 
      URL url = new URL("http://garage.kaptastech.mobi/api/5k/users/vehicle"); 

      HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      conn.setRequestMethod("GET"); 
      InputStream in = new BufferedInputStream(conn.getInputStream()); 
      response = convertStreamToString(in); 



     } 
     catch (MalformedURLException e) { 
      Log.e(TAG, "MalformedURLException: " + e.getMessage()); 
     }catch (ProtocolException e) { 
      Log.e(TAG, "ProtocolException: " + e.getMessage()); 
     } catch (IOException e) { 
      Log.e(TAG, "IOException: " + e.getMessage()); 
     } catch (Exception e) { 
      Log.e(TAG, "Exception: " + e.getMessage()); 
     } 
     return response; 

    } 
    private String convertStreamToString(InputStream is) { 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
     StringBuilder sb = new StringBuilder(); 
     String line; 
     try { 
      while ((line = reader.readLine()) != null) { 
       sb.append(line).append('\n'); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       is.close(); 

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

      } 
     } 
     return sb.toString();`` 
    } 
}` 

i besoin d'ajouter deux paramètres d'en-tête 1 -> id 2 -> imei Comment puis-je ajouter que dans mon fichier java HttpHandler ci-dessus? pls quelqu'un aider me.Many merci à l'avance

Répondre

0

la façon la plus simple est d'ajouter les params à la fin de votre URL:

-à-dire append param1 = valeur1 & param2 = valeur2

donc dans votre cas ce serait quelque chose comme:

URL url = new URL("http://garage.kaptastech.mobi/api/5k/users/vehicle?id=[id]&imei=[imei]"); 

===================================== ==========================

éditer: si vous êtes essayer d'obtenir la réponse que vous pouvez utiliser une tâche async regard sur ce tutoriel qui utilise HttpHandler et tâche async:

http://hmkcode.com/android-cleaner-http-asynctask/

package com.hmkcode.http; 

import org.apache.http.client.methods.HttpUriRequest; 
import com.hmkcode.http.AsyncHttpTask; 

public abstract class HttpHandler { 

public abstract HttpUriRequest getHttpRequestMethod(); 

public abstract void onResponse(String result); 

public void execute(){ 
    new AsyncHttpTask(this).execute(); 
} 
} 

ce qui est la tâche async

package com.hmkcode.http; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.impl.client.DefaultHttpClient; 
import com.hmkcode.http.HttpHandler; 
import android.os.AsyncTask; 
import android.util.Log; 

public class AsyncHttpTask extends AsyncTask<String, Void, String>{ 

private HttpHandler httpHandler; 
public AsyncHttpTask(HttpHandler httpHandler){ 
    this.httpHandler = httpHandler; 
} 

@Override 
protected String doInBackground(String... arg0) { 
    InputStream inputStream = null; 
    String result = ""; 
    try { 

     // create HttpClient 
     HttpClient httpclient = new DefaultHttpClient(); 

     // make the http request 
     HttpResponse httpResponse = httpclient.execute(httpHandler.getHttpRequestMethod()); 

     // receive response as inputStream 
     inputStream = httpResponse.getEntity().getContent(); 

     // convert inputstream to string 
     if(inputStream != null) 
      result = convertInputStreamToString(inputStream); 
     else 
      result = "Did not work!"; 

    } catch (Exception e) { 
     Log.d("InputStream", e.getLocalizedMessage()); 
    } 

    return result; 
} 
@Override 
protected void onPostExecute(String result) { 
    httpHandler.onResponse(result); 
} 

//-------------------------------------------------------------------------------------------- 
private static String convertInputStreamToString(InputStream inputStream) throws IOException{ 
     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); 
     String line = ""; 
     String result = ""; 
     while((line = bufferedReader.readLine()) != null) 
      result += line; 

     inputStream.close(); 
     return result; 
    } 
} 

et ici est comment vous utilisez ces classes de remorquage:

new HttpHandler() { 
     @Override 
     public HttpUriRequest getHttpRequestMethod() { 

      return new HttpGet("http://hmkcode.com/examples/index.php"); 

      // return new HttpPost(url) 
     } 
     @Override 
     public void onResponse(String result) { 
      // what to do with result 
      //e.g. display it on edit text etResponse.setText(result); 
     } 

    }.execute(); 

bonne chance!

+0

msdev, j'ai essayé. mais je n'ai toujours pas reçu de réponse – Arun

+0

la connexion url http utilisée provoque une exception: android.os.NetworkOnMainThreadException ,, et c'est pourquoi vous devez utiliser une tâche asynchrone – msdev16