Requête URL avec paramètres (method POST)
Bonjour,
je développe une appli android dans laquelle j'ai besoin de faire une requête sur un serveur distant contenant un script php.
Côté java, le code est le suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
try {
URL url = new URL(pUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestProperty( "Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty( "charset", "utf-8");
String query ="";
if(params.length!=0){
Uri.Builder builder = new Uri.Builder()
.appendQueryParameter("'firstParam'", (String) params[0])
.appendQueryParameter("'secondParam'", (String) params[1]);
query = builder.build().getEncodedQuery();
}
// Open connection for sending data
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
if(!query.equals("")){
writer.write(query);
}
writer.flush();
writer.close();
os.close();
conn.connect();
//traitement du POST au retour de l'appel:
int response_code = conn.getResponseCode();
// Check if successful connection made
if (response_code == HttpURLConnection.HTTP_OK) {
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"));
StringBuilder sb = new StringBuilder();
String line = null;
// Read Server Response
while((line = reader.readLine()) != null)
{
sb.append(line);
}
reader.close();
json = sb.toString();
}else{
Log.i("retour false", ""+response_code );
}
} catch (UnsupportedEncodingException e) {
Log.e("", e.toString());
} catch (MalformedURLException e) {
Log.e("", e.toString());
} catch (IOException e) {
Log.e("", e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json.substring(json.indexOf("{"), json.lastIndexOf("}") + 1));
Log.d("dd ", jObj.toString());
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e);
} |
côté php, le code est le suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
if (isset($_POST["firstParam"]) && isset($_POST["secondParam"]) ) {
$lon= urldecode($_POST["firstParam"]);
$lat= $_POST["secondParam"];
}
$response["lon"] = utf8_encode($lon);
$response["lat"] = utf8_encode($lat);
********
********
echo json_encode($response,JSON_UNESCAPED_UNICODE); |
lorsque je lance la requête sans paramètres, elle s'exécute correctement mais lorsque je la lance avec des paramètres, j'obtiens une erreur 500.
Merci d'avance pour votre aide.