前段时间需要写一个能双向解析XML的程序,但是客户端只能从服务器里读,但是死活传不上去,倒腾了两天终于搞好了。
下面直接贴示例代码,不明白的话再问吧。
这是android客户端,记得得在AndroidManifest.xml文件里添加INTENET权限。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//测试与服务器交互数据
try {
String sendParam = getString(R.string.sendParam);//这要自己填传输的东西
URL url = new URL(getString(R.string.add));//这要改成自己的URL地址
HttpURLConnection con = (HttpURLConnection) url.openConnection();
HttpURLConnection.setFollowRedirects(true);
con.setDoInput(true);
con.setDoOutput(true);
con.setRequestMethod("POST"); //设置为Post方法
con.setRequestProperty("Content-Type", "multipart/form-data"); //这话似乎没影响
con.connect();
//将数据发送给服务器
OutputStream output = con.getOutputStream();
output.write(sendParam.getBytes());
output.flush();
output.close();
//接受服务器发送过来的信息
if (HttpURLConnection.HTTP_OK == con.getResponseCode()) {
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
System.out.println("READ: "+in.readLine());
in.close();
}
} catch (Exception e) {
e.getStackTrace();
}
}
这是Servlet服务器端的代码:
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = new PrintWriter(response.getOutputStream(), true);
BufferedReader in = new BufferedReader(request.getReader());
//读取客户端发送的数据
System.out.println(in.readLine());
//返回给客户端的应答消息
out.write("SEND BY SERVER");
in.close();
out.close();
}
然后就可以互通消息了。