java.lang.NumberFormatException: For input string: "-1-" -


i want send sms contain arabic message using java api

mobily provider offers java api send sms

i used code java :

public void sendmessage(string username,string password,string sender,string message,string numbers){             string para ="mobile=" + username + "&password=" + password + "&numbers=" + numbers+ "&sender=" + sender + "&msg=" + convertunicode(message) + "&applicationtype=24";             sendurl("http://www.mobily.ws/api/msgsend.php",para,1);             system.out.println(getmessage());     }        public static string convertunicode(string a) {         int bufsize = 16;         byte[] buffer = new byte[bufsize];         string s = null;         try {             buffer=a.getbytes();             s = bytestohex(buffer,0,buffer.length);             system.out.println("hex: "+s);         } catch (exception e) {             system.out.println(e.tostring());         }         return s;     }     public static string bytestohex(byte[] b, int off, int len) {         stringbuffer buf = new stringbuffer();         (int j=0; j<len; j++)             buf.append(bytetohex(b[off+j]));             return buf.tostring();     }     public static string bytetohex(byte b) {         char[] = { hexdigit[(b >> 4) & 0x0f], hexdigit[b & 0x0f] };         return fordigits(new string(a));     }     public static string fordigits(string val){         switch (val.length() ){             case 1:return "000"+val;             case 2:return "00"+val;             case 3:return "0"+val;             case 4:return ""+val;             default:return val;         }     }   public void sendurl(string url,string parameters,int operationnumber){         try {             url url;             urlconnection urlconnection;             dataoutputstream outstream;             // create connection             url = new url(url);             urlconnection = url.openconnection();             ((httpurlconnection)urlconnection).setrequestmethod("post");             urlconnection.setdoinput(true);             urlconnection.setdooutput(true);             urlconnection.setusecaches(false);             urlconnection.setrequestproperty("content-type", "application/x-www-form-urlencoded");             urlconnection.setrequestproperty("content-length", ""+ parameters.length());             urlconnection.setrequestproperty("user-agent","mozilla/4.0");             // create i/o streams             outstream = new dataoutputstream(urlconnection.getoutputstream());             // send request             outstream.writebytes(parameters);             outstream.flush();             outstream.close();             // response             bufferedreader rd = new bufferedreader(new inputstreamreader(urlconnection.getinputstream()));             // - debugging purposes only!             string buffer;             while((buffer = rd.readline()) != null) {                 try{                     selectedmessage(integer.parseint(buffer),operationnumber);                 }catch(exception ex){                     balance=buffer;                 }             }             // close i/o streams             rd.close();             outstream.close();         }         catch(exception ex) {             system.out.println("exception cought:\n"+ ex.tostring());         }     } 

the problem buffer value "-1-"

this value filled in line :

buffer = rd.readline()

so find myself in exception

}catch(exception ex){                   balance=buffer;               } 

the parameters sent in sendmessage method:

sender :شارع علي

message :وجهت إلى

numbers : 00966569114455

updated :

i arrived send message in english

sender : test

message : test

in line while((buffer = rd.readline()) != null) {

the value of buffer equal 1

the problem sending messages in arabic

i try change code without success :

   while((buffer = rd.readline()) != null) {                  try{                       buffer = buffer.replaceall("(-?[0-9]+)([^0-9]*)?","$1");                     buffer=buffer.replace("-", "");                     selectedmessage(integer.parseint(buffer),operationnumber);                 }catch(exception ex){                     balance=buffer;                 } 

also in line in sendurl method:

 urlconnection.setrequestproperty("content-type", "application/x-www-form-urlencoded; charset=utf-8"); 

and in line in convertunicode method :

buffer=a.getbytes(standardcharsets.utf_8); 

this function return final message :

public void selectedmessage(int value,int operationnumber){     switch(operationnumber){         case 1:switch(value){                     case 1:msg= "success";break;                     case 2:msg="error";break;                 }break;          } } 

with modified code force buffer value equal 1

in sendurl method value of parameters :

mobile=966556541236&password=123654&numbers=966569114455&sender=شارع علي&msg=00d800a700d9008400d9008500d800b900d800a700d9008500d9008400d800a9002000d800b100d9008200d9008500d9008800d800ac00d9008700d800aa002000d800a500d9008400d90089002000d9008600d800b800d800a700d90085002000d9008400d9008400d800aa00d800af00d800b100d9008a00d800a8&applicationtype=24 

you might consider doing regex replaceall on input first, filter input.

example:

buffer = rd.readline().replaceall("(-?[0-9]+)([^0-9]*)","$1"); 

this convert input so:

-1-    ->    -1 -1     ->    -1  1-    ->     1 

Comments