Je suis sur le dévéloppement d'une application mobile. J'essaye d'envoyer un formulaire dans un serveur externe. Mais à l'envoie du formulaire, j'ai une exception : "unexpected end of stream on com.android.okhttp.address".
J'ai pas utilisé la librairie okHttp, je ne comprends pas pourquoi j'ai cette erreur. J'ai juste utilisé httpUrlConnection et Asynctask.
Ma classe
public class InscriptionHttpUrlConn {
public String envoiDonnee(String requestURL, HashMap<String, String> postDataParams) {
URL url;
StringBuilder sb = new StringBuilder();//store message retrieved from the server
try {
url = new URL(requestURL); //Initilise l'url
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream(); //Crée un outputStream
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); //Écriture des paramètres
writer.write(getPostDataString(postDataParams));
writer.flush();
writer.close();
/*DataOutputStream out = new DataOutputStream(conn.getOutputStream());
out.writeBytes(getPostDataString(postDataParams));
out.flush();
out.close();*/
int responseCode = conn.getResponseCode();
if (responseCode == HttpsURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
sb = new StringBuilder();
String response;
//Lit la réponse du serveur
while ((response = br.readLine()) != null) {
sb.append(response);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
public String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException {
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) {
sb.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
sb.append("=");
sb.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
sb.append("&");
}
return sb.toString();
}
}
La méthode insert() qui est appelée quand l'utilisateur clique sur le bouton "envoyer " du formulaire
Je dois seulement envoyer deux paramètres dans ma requête, user(qui contient le nom , le prénom, l'email, le pseudo) et pwd (qui contient le mot de passe). C'est ce que j'ai d'ailleurs fait.
Est-ce que quelqu'un peut m'aider à trouver l'erreur svp ? Merci d'avance !
OutputStream os = conn.getOutputStream(); //Crée un outputStream
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); //Écriture des paramètres
writer.write(getPostDataString(postDataParams));
writer.flush();
writer.close();
os.close(); // Fermeture de l'outputStream
int responseCode = conn.getResponseCode();
...
Lucy
Bonjour. Non le problème ne vient pas de là, le outputstream a été fermé
Peut-être peux-tu jeter un oeil sur ceci : https://medium.com/@lewisjkl/android-httpurlconnection-with-asynctask-tutorial-7ce5bf0245cd