java - ProtocolException: unexpected end of stream -


i've been dealing issue keeps coming , i'm getting quite frustrated. i'm trying connect database via template php webservice found online, sending jsonobjects. keep getting either ioexception or protocolexception when trying response code server cause being "unexpected end of stream". error message cryptic , have no idea error in java or php code. posted code, can take look:

stack trace:

java.net.protocolexception: unexpected end of stream       @ com.android.okhttp.internal.http.httpconnection$fixedlengthsink.close(httpconnection.java:314)       @ com.android.okhttp.internal.http.httpengine.readresponse(httpengine.java:781)       @ com.android.okhttp.internal.huc.httpurlconnectionimpl.execute(httpurlconnectionimpl.java:443)       @ com.android.okhttp.internal.huc.httpurlconnectionimpl.getresponse(httpurlconnectionimpl.java:388)       @ com.android.okhttp.internal.huc.httpurlconnectionimpl.getresponsecode(httpurlconnectionimpl.java:501)       @ ske.matej.project.jsonparser.getjsonfromurl(jsonparser.java:56)       @ ske.matej.project.userfunctions.loginuser(userfunctions.java:35)       @ ske.matej.project.loginactivity$attemptlogin.doinbackground(loginactivity.java:145)       @ ske.matej.project.loginactivity$attemptlogin.doinbackground(loginactivity.java:121)       @ android.os.asynctask$2.call(asynctask.java:295)       @ java.util.concurrent.futuretask.run(futuretask.java:237)       @ android.os.asynctask$serialexecutor$1.run(asynctask.java:234)       @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1113)       @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:588)       @ java.lang.thread.run(thread.java:818)

jsonparser.java (i marked offending line comment)

import android.util.log;  import org.json.jsonexception; import org.json.jsonobject;  import java.io.bufferedinputstream; import java.io.bufferedreader; import java.io.ioexception; import java.io.inputstream; import java.io.inputstreamreader; import java.io.outputstream; import java.io.outputstreamwriter; import java.io.unsupportedencodingexception; import java.net.httpurlconnection; import java.net.url;   public class jsonparser {      private jsonobject jsonobj = new jsonobject();     private jsonobject json = new jsonobject();     private string email;     private string username;     private string password;     private int objlength;     private static inputstream = null;      public jsonparser() {         //default constructor intentionally left empty     }      public jsonobject getjsonfromurl(string _url, jsonobject params) {          // making http request         try {             url url = new url(_url);             httpurlconnection conn = (httpurlconnection) url.openconnection();              byte[] bytearray = params.tostring().getbytes("utf-8");              conn.setdooutput(true);             conn.setdoinput(true);             conn.setrequestmethod("post");             conn.setfixedlengthstreamingmode(bytearray.length);             //conn.setrequestproperty("user-agent", "gyuseragentandroid");             conn.setrequestproperty("content-length", integer.tostring(bytearray.length));             conn.setrequestproperty("content-type", "application/json");             //conn.setusecaches(false);              system.out.println("byte array length: "+bytearray.length);              //the offending line                             int responsecodehttp = conn.getresponsecode();               system.out.println("responsecode http "+responsecodehttp);              outputstream os = conn.getoutputstream();             os.write(bytearray);             os.flush();              if (responsecodehttp == httpurlconnection.http_ok) {                 try {                     = new bufferedinputstream(conn.getinputstream());                     bufferedreader reader = new bufferedreader(new inputstreamreader(                             is, "utf-8"), 8);                     stringbuilder sb = new stringbuilder();                     string line = null;                     while ((line = reader.readline()) != null) {                         sb.append(line);                     }                     is.close();                     json = new jsonobject(sb.tostring());                     log.e("json", json.tostring());                 }                 catch (jsonexception e) {                     e.printstacktrace();                 }             }          } catch (unsupportedencodingexception e) {             e.printstacktrace();         } catch (ioexception e) {             e.printstacktrace();         }          return json;      }      public byte[] getjsonbytes() {         try {             return jsonobj.tostring().getbytes("utf-8");         }         catch(unsupportedencodingexception e) {             e.printstacktrace();             return null;         }     } } 

index.php (i didn't change in code yet, want establish connection now)

<?php     if($_post != null) {  	  	echo json_encode("status: 200");  	  	if (isset($_post['tag']) && $_post['tag'] != '') {      // tag      $tag = $_post['tag'];         // include database handler      require_once 'db_functions.php';      $db = new db_functions();      // response array      $response = array("tag" => $tag, "success" => 0, "error" => 0);         // check tag type      if ($tag == 'login') {          // request type check login          $email = $_post['email'];          $password = $_post['password'];             // check user          $user = $db->getuserbyemailandpassword($email, $password);  		  		  		//for testing purposes: remove later  		$user = false;  		  		          if ($user != false) {              // user found              // echo json success = 1              $response["success"] = 1;              $response["user"]["fname"] = $user["firstname"];              $response["user"]["lname"] = $user["lastname"];              $response["user"]["email"] = $user["email"];          $response["user"]["uname"] = $user["username"];              $response["user"]["uid"] = $user["unique_id"];              $response["user"]["created_at"] = $user["created_at"];                 echo json_encode($response);          } else {              // user not found              // echo json error = 1              $response["error"] = 1;              $response["error_msg"] = "incorrect email or password!";              echo json_encode($response);          }      }    else if ($tag == 'chgpass'){    $email = $_post['email'];       $newpassword = $_post['newpas'];       $hash = $db->hashssha($newpassword);          $encrypted_password = $hash["encrypted"]; // encrypted password          $salt = $hash["salt"];    $subject = "change password notification";           $message = "hello user,nnyour password sucessfully changed.nnregards,nlearn2crack team.";            $from = "contact@learn2crack.com";            $headers = "from:" . $from;      if ($db->isuserexisted($email)) {      $user = $db->forgotpassword($email, $encrypted_password, $salt);  if ($user) {           $response["success"] = 1;            mail($email,$subject,$message,$headers);           echo json_encode($response);  }  else {  $response["error"] = 1;  echo json_encode($response);  }                 // user existed - error response             }             else {                 $response["error"] = 2;              $response["error_msg"] = "user not exist";               echo json_encode($response);     }  }  else if ($tag == 'forpass'){  $forgotpassword = $_post['forgotpassword'];     $randomcode = $db->random_string();     $hash = $db->hashssha($randomcode);          $encrypted_password = $hash["encrypted"]; // encrypted password          $salt = $hash["salt"];    $subject = "password recovery";           $message = "hello user,nnyour password sucessfully changed. new password $randomcode . login new password , change in user panel.nnregards,nlearn2crack team.";            $from = "contact@learn2crack.com";            $headers = "from:" . $from;      if ($db->isuserexisted($forgotpassword)) {      $user = $db->forgotpassword($forgotpassword, $encrypted_password, $salt);  if ($user) {           $response["success"] = 1;            mail($forgotpassword,$subject,$message,$headers);           echo json_encode($response);  }  else {  $response["error"] = 1;  echo json_encode($response);  }                 // user existed - error response             }             else {                 $response["error"] = 2;              $response["error_msg"] = "user not exist";               echo json_encode($response);     }     }  else if ($tag == 'register') {          // request type register new user          $fname = $_post['fname'];          $lname = $_post['lname'];          $email = $_post['email'];          $uname = $_post['uname'];          $password = $_post['password'];             // check if user existed          if ($db->isuserexisted($email)) {              // user existed - error response              $response["error"] = 2;              $response["error_msg"] = "user existed";              echo json_encode($response);          }             else if(!$db->validemail($email)){              $response["error"] = 3;              $response["error_msg"] = "invalid email id";              echo json_encode($response);  }  else {              // store user              $user = $db->storeuser($fname, $lname, $email, $uname, $password);              if ($user) {                  // user stored              $response["success"] = 1;              $response["user"]["fname"] = $user["firstname"];              $response["user"]["lname"] = $user["lastname"];              $response["user"]["email"] = $user["email"];          $response["user"]["uname"] = $user["username"];              $response["user"]["uid"] = $user["unique_id"];              $response["user"]["created_at"] = $user["created_at"];                 mail($email,$subject,$message,$headers);                     echo json_encode($response);              } else {                  // user failed store                  $response["error"] = 1;                  $response["error_msg"] = "json error occured in registartion";                  echo json_encode($response);              }          }      } else {           $response["error"] = 3;           $response["error_msg"] = "json error";          echo json_encode($response);      }  } else {      echo "";  }  }     ?>

i appreciate can give. because i'm still noob in android development , php.

change :

//the offending line                         int responsecodehttp = conn.getresponsecode();           system.out.println("responsecode http "+responsecodehttp);          outputstream os = conn.getoutputstream();         os.write(bytearray);         os.flush(); 

to:

        outputstream os = conn.getoutputstream();         os.write(bytearray);         os.flush();  //not more offending line                             int responsecodehttp = conn.getresponsecode();               system.out.println("responsecode http "+responsecodehttp); 

Comments