工具:
Android客户端:Android Studio
Web服务端: IDEA 或者MyEclipse【此文以IDEA为例】
其他:Tomcat
客户端代码:
public void TestServlet(View v){
//构建URL的格式为: http://IP地址:监听的端口号/Servlet的路径
final String strUrl = "http://192.168.1.104:8080/mLogin";
final URL[] url = {null};
Thread th=new Thread(new Runnable() {
@Override
public void run() {
try{
//第一步:访问网站,进行连接
url[0] =new URL(strUrl);
HttpURLConnection urlConn=(HttpURLConnection) url[0].openConnection();
urlConn.setDoInput(true); //setting inputstream using bytestream
urlConn.setDoOutput(true);
urlConn.setRequestMethod("POST");
urlConn.setUseCaches(false);
urlConn.setRequestProperty("Content-Type","application/x-ww-form-urlencoded"); //
urlConn.setRequestProperty("Charset","utf-8");
urlConn.connect();
//第二步:准备好发送的数据
Map<String ,String> map=new HashMap<>();
map.put("username","Dear lonikitave");
map.put("password","123456");
JSONArray jsonarray= JSONArray.fromObject(map);
//第三步:打开数据通道
DataOutputStream dop=new DataOutputStream(urlConn.getOutputStream());
dop.writeUTF(String.valueOf(jsonarray));
//第四步:将准备的数据发送给服务器
dop.flush();
dop.close();
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
String result="";
String readLine=null;
while ((readLine=bufferedReader.readLine())!=null){
result+=readLine;
}
bufferedReader.close();
urlConn.disconnect();
//调试返回的数据
System.out.println("从服务端获得的返回数据为: "+ URLDecoder.decode(result,"utf-8"));
}catch (MalformedURLException e){
System.out.println("出现了异常:"+e.getMessage());
} catch (IOException e) {
System.out.println("出现了异常:"+e.getMessage());
e.printStackTrace();
}
}
});
th.start();
}
服务端代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
byte[] buffer=new byte[1024];
InputStream inputStream=request.getInputStream();
ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
int length;
while ((length=inputStream.read(buffer))!=-1){
byteArrayOutputStream.write(buffer,0,length);
}
String str= URLDecoder.decode(String.valueOf(byteArrayOutputStream),"UTF-8");
String str_result=str.substring(3,str.length()-1);
JSONObject jsonObject=JSONObject.fromObject(str_result);
System.out.println("从客户端收到的消息为:\n用户名:"+jsonObject.getString("username")+"\n密码为:"+jsonObject.getString("password"));
String str_response="服务器已经收到客户端的消息";
response.getWriter().write(URLEncoder.encode(str_response,"UTF-8"));
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
代码运行结果:
客户端控制台:
服务端控制台:
注意事项:
1.在IDEA端,在web目录下需建立一个文件夹lib,并在里边加入JSON需要用到的jar包;下载地址为:点击跳转至下载界面
2.如果使用的是Tomcat来部署web项目,则还需要将这两个jar包一同复制粘贴至tomcat安装路径下面的lib文件夹,否则,项目运行时,服务端会报错;
3.访问网站属于耗时操作,应该另外开一个线程去执行它。