【发布时间】:2014-08-20 13:12:26
【问题描述】:
这是我的客户端代码。客户端发送手机号码。到 Servlet。然后 Servlet 向客户端发送一个字符串,该字符串将由 Client.Servlet 进行 base64 编码,然后从 Inputstream 中读取此编码字符串。但它从 Inputstream 中什么也不读取。
private class SendIP extends AsyncTask<Void, Void, String>
{
EditText et;
Integer value;
protected String doInBackground(Void... params)
{
try
{
URL url = new URL("http://10.0.2.2:8080/New/MyServlet");
URLConnection connection = url.openConnection();
connection.setDoOutput(true);
et = (EditText) findViewById(R.id.editText1);
number = et.getText().toString();
OutputStreamWriter out=new OutputStreamWriter(connection.getOutputStream());
out.write(number+"\n");//sending mobile no. to server
out.flush();
out.close();
BufferedReader in=new BufferedReader(new InputStreamReader (connection.getInputStream()));
message=in.readLine();
str=in.readLine();//reading the string sent by server
in.close();
byte[]data=str.getBytes("UTF-8");
base64=Base64.encodeToString(data, Base64.DEFAULT);//encoding the string into base64
OutputStreamWriter out1=new OutputStreamWriter(connection.getOutputStream());
out1.write(base64+"\n");
out1.flush();//sending the encoded string to server
out1.close();
//out.close();
}
catch(Exception e)
{
e.printStackTrace();
}
/*catch(IOException e)
{
e.printStackTrace();
}
*/
这是我的服务器端代码。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//PrintWriter out=response.getWriter();
try
{
byte buf[]=new byte[40];
byte b[]=new byte[40];
ServletInputStream sin=request.getInputStream();
num=sin.readLine(buf, 0, buf.length);//reading mobile no. from client
String message=new String(buf);
System.out.println(message);
//response.setStatus(HttpServletResponse.SC_OK);
}
}
}
}
OutputStreamWriter writer=new OutputStreamWriter(response.getOutputStream());
res="mobile no. received";
str="hello client";
writer.write(res+"\n");//sending mobile number to server
writer.write(str+"\n");//sending string to be encoded to server
writer.flush();
num1=sin.readLine(b,0,b.length);//reading the encoded string from client
base64=new String(b);
System.out.println(num1);//this prints -1
sin.close();
response.setStatus(HttpServletResponse.SC_OK);
writer.close();
}
catch(IOException e)
{
response.getWriter().println(e);
}
【问题讨论】:
标签: java android servlets urlconnection