`
conkeyn
  • 浏览: 1504225 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

HttpURLConnection or URLConnection post xml content to web server

 
阅读更多

 

 

客户端示例1:

package client;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;

public class HttpPostTest2 {

	/**
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
		String url = "http://192.168.0.101:8080/mport/testServlet";
		String charset = "UTF-8";
		String param1 = URLEncoder.encode("param1", charset);
		String param2 = URLEncoder.encode("param2", charset);
		String query = String.format("param1=%s&param2=%s", param1, param2);

		URLConnection urlConnection = new URL(url).openConnection();
		urlConnection.setUseCaches(false);
		urlConnection.setDoOutput(true); // Triggers POST.
		urlConnection.setRequestProperty("accept-charset", charset);
		urlConnection.setRequestProperty("content-type", "application/x-www-form-urlencoded");//必须定义为text/xml、text/html、multi/form-data内容类型,如果定义为application/x-www-form-urlencoded则在request.getParamter()方法取得到数据
		urlConnection.setRequestProperty("Content-Length", String.valueOf(query.length()));

		OutputStreamWriter writer = null;
		try {
			writer = new OutputStreamWriter(urlConnection.getOutputStream(), charset);
			writer.write(query); // Write POST query string (if any needed).
			writer.flush();
		} finally {
			if (writer != null)
				try {
					writer.close();
				} catch (IOException logOrIgnore) {
				}
		}

		InputStream result = urlConnection.getInputStream();
		int length = result.available();
		byte[] bytes = new byte[length];
		result.read(bytes);
		System.out.write(bytes);
		result.close();
		// Now do your thing with the result.
		// Write it into a String and put as request attribute
		// or maybe to OutputStream of response as being a Servlet behind `jsp:include`.
	}
}

 客户端示例2:

package client;

import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpPostTest3 {

	/**
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
		InputStream input = HttpPostTest3.class.getResourceAsStream("documentTest4.xml");
		byte[] data;
		try {
			data = new byte[input.available()];
			input.read(data);
			// 把XML的数据转成字符串
			String str = new String(data);
			System.out.println(str);
			byte[] bb = str.getBytes("UTF-8");
			// 请求地址
			URL url = new URL("http://192.168.0.101:8080/mport/testServlet");
			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
			conn.setRequestMethod("POST");
			conn.setConnectTimeout(5 * 1000);// 设置超时的时间
			conn.setDoInput(true);
			conn.setDoOutput(true);// 如果通过post提交数据,必须设置允许对外输出数据
			conn.setRequestProperty("Content-Type", "text/xml; charset=UTF-8");// 必须定义为text/xml内容类型,如果定义为application/x-www-form-urlencoded、multi/form-data
			conn.setRequestProperty("Content-Length", String.valueOf(bb.length));
			conn.connect();
			DataOutputStream out = new DataOutputStream(conn.getOutputStream());
			out.writeBytes(str); // 写入请求的字符串
			out.flush();
			out.close();
			// 请求返回的状态
			if (conn.getResponseCode() == 200) {
				System.out.println("yes++");
				// 请求返回的数据
				InputStream in = conn.getInputStream();
				String a = null;
				try {
					byte[] data1 = new byte[in.available()];
					in.read(data1);
					// 转成字符串
					a = new String(data1);
					System.out.println(a);
				} catch (Exception e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			} else {
				System.out.println("no++");
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 服务端代码示例:

package abeop.serlvet;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet extends HttpServlet {

	private static final long serialVersionUID = 2623084802650650845L;

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 测试是否被getParamter()方法获取到,只有在没被获取到情况下才能取得getInputStream()
		System.out.println("param1: " + req.getParameter("param1"));
		// 第一种方式
		try {
			InputStream in = req.getInputStream();
			BufferedReader br = new BufferedReader(new InputStreamReader(in));
			StringBuffer data = new StringBuffer();
			String line = null;
			while ((line = br.readLine()) != null) {
				data.append(line);
			}
			System.out.println("服务器端获取到流数据:" + data.toString());
			// 设置返回状态
			resp.setStatus(HttpServletResponse.SC_OK);
		} catch (Exception ex) {
			resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
		}
		// 第二方式
		// ServletInputStream sis = req.getInputStream();
		// int readed=0;//读出字节数
		// byte [] buffer = new byte [1024];
		// while((readed = sis.read(buffer, 0, buffer.length))!=-1){
		// System.out.write(buffer, 0, readed);
		// }
	}
}

 web.xml配置:

<servlet>
		<servlet-name>TestServlet</servlet-name>
		<servlet-class>abeop.serlvet.TestServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>TestServlet</servlet-name>
		<url-pattern>/testServlet</url-pattern>
	</servlet-mapping>

 

分享到:
评论

相关推荐

    Android与Internet接轨案例源代码

    8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过网络播放MP3——Runnable存储FileOutputStream技巧 8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 ...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过网络播放MP3——Runnable存储FileOutputStream技巧 8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 ...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过网络播放MP3——Runnable存储FileOutputStream技巧 8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 ...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过网络播放MP3——Runnable存储FileOutputStream技巧 8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 ...

    Google+Android+SDK开发范例大全

    实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过网络播放MP3——Runnable存储FileOutputStream技巧 8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 远程下载桌面背景...

    Google Android SDK开发范例大全的目录

    8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过网络播放MP3——Runnable存储FileOutputStream技巧 8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 ...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过网络播放MP3——Runnable存储FileOutputStream技巧 8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 ...

    Google Android SDK 开发范例大全01

    8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过网络播放MP3——Runnable存储FileOutputStream技巧 8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 ...

    Google Android SDK 开发范例大全02

    8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过网络播放MP3——Runnable存储FileOutputStream技巧 8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 ...

    Google Android sdk 开发范例大全 部分章节代码

    8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过网络播放MP3——Runnable存储FileOutputStream技巧 8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 ...

    Google Android SDK开发范例大全(完整版)

    8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过网络播放MP3——Runnable存储FileOutputStream技巧 8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 ...

Global site tag (gtag.js) - Google Analytics