在android手机端写了个程序,功能是完成一个两位数的运算。这个运算过程是在java后台完成的,android端利用Http通信把相关的参数传过去,后台经过计算把结果返回给客户端。


贴出客户端部分代码

//点击按钮,把参数打包成json格式发送到后台

publicvoidsend(Viewv){Stringstr1=tv1.getText().toString();Stringstr2=tv2.getText().toString();if(str1.equals("")||str2.equals("")){Toast.makeText(MainActivity.this,"参数不能为空!",Toast.LENGTH_LONG).show();return;}finalinta=Integer.parseInt(str1);finalintb=Integer.parseInt(str2);newThread(newRunnable(){@Overridepublicvoidrun(){JSONObjectjsonObject=newJSONObject();JSONArrayjsonArray=newJSONArray();try{jsonObject.put("parm1",a+"");jsonObject.put("parm2",b+"");jsonArray.put(jsonObject);}catch(JSONExceptione){e.printStackTrace();}result=newHttpUtils().getDataFromServer(Consant.url,jsonArray.toString(),method,a,b);mHandler.sendEmptyMessage(0x0001);}}).start();}


//在这里我同时进行两种方式的参数传递

//一个是setRequestProperty(key, value);

//另一个是常用的输出流


/**

* 根据手机号从服务器获取相关信息

* 从服务器上获取指定的内容-POST

*

*/

publicStringgetDataFromServer(StringsvrUrl,StringParamStr,Stringtype,inta,intb){try{//转成指定格式byte[]requestData=ParamStr.getBytes("UTF-8");HttpURLConnectionconn=null;DataOutputStreamoutStream=null;StringMULTIPART_FORM_DATA="multipart/form-data";//构造一个post请求的http头URLurl=newURL(svrUrl);//服务器地址conn=(HttpURLConnection)url.openConnection();conn.setDoInput(true);//允许输入conn.setDoOutput(true);//允许输出conn.setUseCaches(false);//不使用cachesconn.setRequestMethod("POST");conn.setRequestProperty("Connection","Keep-Alive");conn.setRequestProperty("Content-Type",MULTIPART_FORM_DATA);conn.setRequestProperty("Content-Length",Long.toString(requestData.length));conn.setRequestProperty("method",type);conn.setRequestProperty("one",a+"");conn.setRequestProperty("two",b+"");//请求参数内容,获取输出到网络的连接流对象outStream=newDataOutputStream(conn.getOutputStream());outStream.write(requestData,0,requestData.length);outStream.flush();outStream.close();ByteArrayOutputStreamoutStream2=newByteArrayOutputStream();intcah=conn.getResponseCode();if(cah!=200){Log.v("data","服务器响应错误代码:"+cah);return"0";}elseif(cah==200){Log.v("data","服务器响应成功:"+cah);}InputStreaminputStream=conn.getInputStream();intlen=0;byte[]data=newbyte[1024];while((len=inputStream.read(data))!=-1){outStream2.write(data,0,len);}outStream2.close();inputStream.close();StringresponseStr=newString(outStream2.toByteArray());Log.v("data","data="+responseStr);returnresponseStr;}catch(Exceptione){return"";}}



接下来看看java服务端处理

//在java web项目中创建了一个Servlet用来接收客户端发送的数据

//因为客户端用的是Post方法,所以我们在Servlet的Post方法中对数据进行处理

//客户端用了两种方式传参数,在后台我们仍然用两种方式取参数

//第一种String method = request.getHeader("method").toString();

//第二种则是输出流来取值了

protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{System.out.println("---------00000000----");inta;intb;intres=0;doubleres2=0;Stringresult;Stringmethod=request.getHeader("method").toString();Stringstr1=request.getHeader("one").toString();Stringstr2=request.getHeader("two").toString();System.out.println(method+"/"+str1+"/"+str2);try{a=Integer.parseInt(str1);b=Integer.parseInt(str2);}catch(Exceptione){response.getWriter().append(e.getMessage()+"");return;}if(method.equals("+")){res=newUtils().plus(a,b);}elseif(method.equals("-")){res=newUtils().minus(a,b);}elseif(method.equals("*")){res=newUtils().multy(a,b);}elseif(method.equals("/")){res2=newUtils().trad(a,b);}if(method.equals("/")){result=res2+"";}else{result=res+"";}response.setCharacterEncoding("utf-8");response.getWriter().append(result+"");getData(request);}
publicStringgetData(HttpServletRequestreq){Stringresult=null;try{//包装request的输入流BufferedReaderbr=newBufferedReader(newInputStreamReader((ServletInputStream)req.getInputStream(),"utf-8"));//缓冲字符StringBuffersb=newStringBuffer("");Stringline;while((line=br.readLine())!=null){sb.append(line);}br.close();//关闭缓冲流result=sb.toString();//转换成字符System.out.println("result="+result);}catch(Exceptione){e.printStackTrace();}returnresult;}

另外注意编码格式问题,在客户端用的是utf-8编码,我们在服务端仍然要用utf-8编码,否则出现中文乱码现象。


//电脑的ip地址

//手机和电脑处于同一个局域网内,所以可以通过ip访问内网Tomcat

public static String url = "http://192.168.1.122:8080/MathTest/action?";



更多相关文章

  1. Android设置TextView中部分字体颜色和点击事件
  2. Android异步操作总结
  3. swift横空出世
  4. android开发我的新浪微博客户端-开篇
  5. Android中的Sqlite数据库的简单使用
  6. Android绘图系列(一)——自定义View基础
  7. Android(安卓)访问 .net C#写的webservice
  8. Error:UNEXPECTED TOP-LEVEL ERROR:
  9. 【Android】AsyncTask源码分析

随机推荐

  1. Android(安卓)ScrollView嵌套ScrollView
  2. Android(安卓)1.5 1.6 2.0 2.1 2.2都有什
  3. 2011.09.07(4)——— android 跨进程通信之
  4. 【API Guides视频系列】第1篇Application
  5. Android发送短信
  6. Android(安卓)Bitmap Drawable byte[] In
  7. android:installLocation简析
  8. Android(安卓)Error: Conversion to Dalv
  9. Android仿iPhone 滚轮控件 实现
  10. android 8.1 开机壁纸下半部分黑屏2-3秒