Unexpected end of stream on com.android.okhttp.address
Lucy
-
Lucy -
Lucy -
Bonjour !
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
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 !
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
private void insert() {
strUsername = userName.getText().toString().trim();
strNom = nom.getText().toString().trim();
strPrenom = prenom.getText().toString().trim();
strEmail = email.getText().toString().trim();
strMdp = mdp.getText().toString().trim();
class Insert extends AsyncTask<String, Void, String> {
ProgressDialog progressDialog;
@Override
protected String doInBackground(String... strings) {
HashMap<String, String> parametres = new HashMap<>();
HashMap<String, String> hashMapUser = new HashMap<>();
//Client user = new Client(strUsername, strEmail, strNom, strPrenom);
hashMapUser.put("userName", strUsername);
hashMapUser.put("email", strEmail);
hashMapUser.put("lastName", strNom);
hashMapUser.put("firstName", strPrenom);
parametres.put("user", String.valueOf(hashMapUser));
parametres.put("pwd", strMdp);
InscriptionHttpUrlConn insHttpUrlConn = new InscriptionHttpUrlConn();
String hc = insHttpUrlConn.envoiDonnee("http://69.159.182.204:9876/isserver/users", parametres);
return hc;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = ProgressDialog.show(ctx, "Enregistrement...", "En cours...", false, false);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
progressDialog.dismiss();
Intent intent = new Intent(ctx, ConfirmationInscription.class);
startActivity(intent);
}
}
Insert in = new Insert();
in.execute();
}
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 !
A voir également:
- Okhttp unexpected end of stream
- Input signal out of range ✓ - Forum Matériel & Système
- Ace stream - Télécharger - Lecture
- End clothing avis - Forum Consommation & Internet
- Popcorn stream - Télécharger - TV & Vidéo
- Papa du stream avis ✓ - Forum Loisirs / Divertissements
1 réponse
Hello,
Je pense qu'il manque la fermeture de ton
Je pense qu'il manque la fermeture de ton
OutputStream
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(); ...
Peut-être peux-tu jeter un oeil sur ceci : https://medium.com/@lewisjkl/android-httpurlconnection-with-asynctask-tutorial-7ce5bf0245cd