`
conkeyn
  • 浏览: 1528942 次
  • 性别: 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>

 

分享到:
评论

相关推荐

    谈谈Java利用原始HttpURLConnection发送POST数据

    在使用`HttpURLConnection`发送POST数据时,我们首先需要创建一个URL对象,然后通过`openConnection()`方法打开与指定URL的连接。接着,我们需要配置连接的一些属性,如设置`setDoOutput(true)`表示我们将会发送数据...

    HttpURLConnection获取webService上的值

    在本篇内容中,我们将深入探讨如何利用HttpURLConnection来获取Web Service上的数据,以及如何解析返回的XML节点,这部分将涉及W3C标准的XML解析方法。 首先,让我们了解HttpURLConnection的基本用法。...

    Android与Internet接轨案例源代码

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

    HttpURLConnection 的使用二

    相较于`java.net.URLConnection`,`HttpURLConnection`更加强大且专为HTTP设计,适合构建基于HTTP的应用。 在"HttpURLConnection的使用二"这个主题中,我们可能讨论的是在初识`HttpURLConnection`的基础上,深入...

    Android调用Web应用浅析.pdf

    《Android调用Web应用浅析》这篇文章主要探讨了Android如何访问和交互不同类型的Web应用程序,如JSP和ASP.NET,以及如何处理XML和JSON数据。文章深入研究了两种主要的网络访问方式:通过URL和使用HTTP客户端...

    WebService URLConnection request/response JDK1.3

    在Java编程领域,WebService是一种基于XML的网络服务接口标准,它允许不同的系统通过互联网进行通信和数据交换。在JDK1.3及更高版本中,Java提供了URLConnection类,这是一个核心的类,用于与URL(统一资源定位符)...

    Web Service Tester

    【描述】Web Service Tester是一个针对Android 2.0平台的Eclipse工程,它演示了如何使用URLConnection和HttpClient两种方法来执行对WebService的GET和POST请求。这个工具对于开发者来说,是理解和实践网络通信的重要...

    Android HTTP 客户端编程.pdf

    5. **请求与响应**:使用HttpURLConnection,开发者可以通过setRequestMethod("GET")或setRequestMethod("POST")设置请求类型,然后调用connect()方法建立连接。响应数据可以通过getInputStream()获取,通常需要进行...

    Android上传多文件到服务器

    outputStream.writeBytes("Content-Type: " + URLConnection.guessContentTypeFromName(file.getName()) + "\r\n\r\n"); Files.copy(file.toPath(), outputStream); outputStream.writeBytes("\r\n"); } } ``` 4...

    Android开发使用HttpURLConnection进行网络编程详解【附源码下载】

    本文将详细介绍如何在Android中使用HttpURLConnection进行网络编程,包括设置请求方法、获取响应码、处理GET和POST请求以及实现多线程下载,并涉及权限控制和布局文件的使用。 首先,设置请求方法是通过`...

    webservers

    它定义了一种轻量级的格式,用于通过Web交换结构化的和固化的信息。 2. **HTTP (Hypertext Transfer Protocol)**:超文本传输协议,是用于从WWW服务器传输超文本到本地浏览器的传送协议。`WebService`通常通过HTTP...

    JAVA调用HTTP及httpclient的详细说明

    System.out.println("\nSending 'POST' request to URL : " + postUrl); System.out.println("Response Code : " + responseCode); // 读取响应 BufferedReader in = new BufferedReader(new InputStreamReader...

    Android Studio调用RestfulWCF接口

    在 Android Studio 中调用 Restful WCF 接口需要使用 Java 的标准类 HttpURLConnection,该类继承自 URLConnection,提供了访问 HTTP 协议的基本功能,能够向指定网站发送 GET 请求和 POST 请求。但是,在 Android ...

    Android基础 网络通信

    - 创建连接:`HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();` - 设置请求方法:`urlConnection.setRequestMethod("GET");`或`urlConnection.setRequestMethod("POST");` - 发送...

    使用UrlConnection实现后台模拟http请求的简单实例

    本实例将详细解释如何使用`UrlConnection`来实现这一功能,包括设置请求头、发送POST数据以及处理响应。 首先,我们需要创建一个HTTP连接。在示例代码中,我们首先构建了一个URL对象,并通过`openConnection()`方法...

    applet与servlet的网络通信

    `Applet`使用`java.net.HttpURLConnection`类或者`java.net.URLConnection`类来创建连接并发送请求。 2. **GET请求**:`Applet`也可以发送GET请求获取`Servlet`的数据。这种情况下,请求参数通常包含在URL中。`...

    servlet applet通讯的例子

    另一种方式是Applet直接通过URLConnection或HttpURLConnection与Servlet通信,发送请求并接收响应。 2. **URLConnection类**: - TestURLConnection这个文件可能是一个演示如何使用URLConnection来建立Servlet和...

    diting_java.zip_在线视频 java_网络编程WEB设计_视频 弹幕

    Java的HttpURLConnection类可以直接处理HTTP请求和响应,方便地进行文件上传下载、POST请求等操作。 【WebSocket协议与实时通信】 为了实现在线观看视频、留言和发弹幕等功能,项目可能使用了WebSocket协议。...

    java调用WebService(客户端)宣贯.pdf

    在Java中,可以使用`URLConnection`或`java.net.HttpURLConnection`来构造POST请求。 3.HttpSoap调用: HttpSoap协议适用于SOAP(简单对象访问协议)消息传输。SOAP消息在HTTP请求正文中发送,响应也在HTTP响应正文...

Global site tag (gtag.js) - Google Analytics