J'utilise HttpURLConnection pour communiquer avec le service Web dans l'un de mes applications Android, GET méthode & paramètres sont soumis correctement, mais quand j'ai essayé de demander POST les paramètres POST ne sont pas soumis dans la demande. J'ai joint la méthode utilisée, s'il vous plaît me guider où je vais mal.Android - HttpURLConnection paramètres POST ne fonctionne pas
/*
* Making service call
* @url - url to make request
* @method - http request method
* @params - http request params
* */
public String makeServiceCall(String request_url, int method,
Map<String,String> params) {
InputStream inputStream = null;
HttpURLConnection urlConnection = null;
Integer result = 0;
try {
URL url = new URL(request_url);
urlConnection = (HttpURLConnection) url.openConnection();
//urlConnection.setRequestProperty("Content-Type", "application/xml");
//urlConnection.setRequestProperty("Accept", "application/xml");
urlConnection.setReadTimeout(10000);
urlConnection.setConnectTimeout(15000);
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
if (method == GET) {
urlConnection.setRequestMethod("GET");
} else if(method == POST) {
urlConnection.setRequestMethod("POST");
String urlParameters = null;
for (Map.Entry<String, String> entry : params.entrySet()) {
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
if(urlParameters != null)
{
urlParameters += "&";
}
urlParameters +=entry.getKey() +"="+ URLEncoder.encode(entry.getValue(), "UTF-8");
}
Log.d(TAG, "urlParameters: "+urlParameters);
//Send request
OutputStream os = urlConnection.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(urlParameters);
writer.flush();
writer.close();
}
int statusCode = urlConnection.getResponseCode();
if (statusCode == HttpsURLConnection.HTTP_OK) {
inputStream = new BufferedInputStream(urlConnection.getInputStream());
response = convertInputStreamToString(inputStream);
result = 1; // Successful
} else {
result = 0; //"Failed to fetch data!";
}
} catch (Exception e) {
Log.d(TAG, ""+e.getLocalizedMessage());
e.printStackTrace();
}
Log.d(TAG, ""+response);
return response;
}
Merci @Dhaval, il a résolu le problème ... –
comment bout si les paramètres valeur contiennent des caractères '&' comme ça http://stackoverflow.com/questions/38418389/httpsurlconnection-and-volley-difference une suggestion? –