Android HttpClient, DefaultHttpClient, HttpPost

Comment puis-je envoyer une chaîne de données (JSONObject.toString()) à une url. Je veux écrire une méthode statique dans une classe util pour ce faire. Je veux la signature de la méthode comme suit

public static String postData (String url, String postData) throws SomeCustomException

Quel doit être le format de la chaîne url

La Chaîne de retour est la réponse du serveur en tant que représentation de chaîne de données json.

MODIFIER

Connexion actuelle util

package my.package;
import my.package.exceptions.CustomException;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URLDecoder;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
public class ConnectionUtil {
public static String postData(String url, String postData)
throws CustomException {
//Create a new HttpClient and Post Header
InputStream is = null;
StringBuilder sb = null;
String result = "";
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost();
httppost.setHeader("host", url);
Log.v("ConnectionUtil", "Opening POST connection to URI = " + httppost.getURI() + " url = " + URLDecoder.decode(url));
try {
httppost.setEntity(new StringEntity(postData));
//Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch (Exception e) {
Log.e("log_tag", "Error in http connection " + e.toString());
e.printStackTrace();
throw new CustomException("Could not establish network connection");
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "utf-8"), 8);
sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line = "0";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
throw new CustomException("Error parsing the response");
}
Log.v("ConnectionUtil", "Sent: "+postData);
Log.v("ConnectionUtil", "Got result "+result);
return result;
}
}

Logcat de sortie

10-16 11:27:27.287: E/log_tag(4935): Erreur de connexion http java.lang.NullPointerException
10-16 11:27:27.287: W/Système.err(4935): java.lang.NullPointerException
10-16 11:27:27.287: W/Système.err(4935): au org.apache.http.impl.client.AbstractHttpClient.determineTarget(AbstractHttpClient.java:496)
10-16 11:27:27.307: W/Système.err(4935): au org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
10-16 11:27:27.327: W/Système.err(4935): au org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
10-16 11:27:27.327: W/Système.err(4935): au en.gharpay.zap.de l'intégration.ConnectionUtil.postData(ConnectionUtil.java:92)
10-16 11:27:27.327: W/Système.err(4935): au en.gharpay.zap.de l'intégration.ZapTransaction$1.doInBackground(ZapTransaction.java:54)
10-16 11:27:27.327: W/Système.err(4935): au en.gharpay.zap.de l'intégration.ZapTransaction$1.doInBackground(ZapTransaction.java:1)
10-16 11:27:27.327: W/Système.err(4935): au android.os.AsyncTask$2.appel(AsyncTask.java:185)
10-16 11:27:27.327: W/Système.err(4935): à java.util.de façon concomitante.FutureTask$De Synchronisation.innerRun(FutureTask.java:306)
10-16 11:27:27.327: W/Système.err(4935): à java.util.de façon concomitante.FutureTask.exécuter(FutureTask.java:138)
10-16 11:27:27.327: W/Système.err(4935): à java.util.de façon concomitante.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
10-16 11:27:27.327: W/Système.err(4935): à java.util.de façon concomitante.ThreadPoolExecutor$Par Travailleur.exécuter(ThreadPoolExecutor.java:581)
10-16 11:27:27.327: W/Système.err(4935): à java.lang.Fil de discussion.exécution(Thread.java:1019)
10-16 11:27:27.327: V/log_tag(4935): impossible d'établir une connexion réseau

quel est le problème?
Je pense qu'il y a un problème avec votre méthode POST envoi StringEntity à la fin du serveur.. découvrez ma dernière réponse et voir si cela fonctionne..

OriginalL'auteur kapad | 2012-10-16