客户端示例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¶m2=%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>
相关推荐
在使用`HttpURLConnection`发送POST数据时,我们首先需要创建一个URL对象,然后通过`openConnection()`方法打开与指定URL的连接。接着,我们需要配置连接的一些属性,如设置`setDoOutput(true)`表示我们将会发送数据...
在本篇内容中,我们将深入探讨如何利用HttpURLConnection来获取Web Service上的数据,以及如何解析返回的XML节点,这部分将涉及W3C标准的XML解析方法。 首先,让我们了解HttpURLConnection的基本用法。...
8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过网络播放MP3——Runnable存储FileOutputStream技巧 8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 ...
相较于`java.net.URLConnection`,`HttpURLConnection`更加强大且专为HTTP设计,适合构建基于HTTP的应用。 在"HttpURLConnection的使用二"这个主题中,我们可能讨论的是在初识`HttpURLConnection`的基础上,深入...
《Android调用Web应用浅析》这篇文章主要探讨了Android如何访问和交互不同类型的Web应用程序,如JSP和ASP.NET,以及如何处理XML和JSON数据。文章深入研究了两种主要的网络访问方式:通过URL和使用HTTP客户端...
在Java编程领域,WebService是一种基于XML的网络服务接口标准,它允许不同的系统通过互联网进行通信和数据交换。在JDK1.3及更高版本中,Java提供了URLConnection类,这是一个核心的类,用于与URL(统一资源定位符)...
【描述】Web Service Tester是一个针对Android 2.0平台的Eclipse工程,它演示了如何使用URLConnection和HttpClient两种方法来执行对WebService的GET和POST请求。这个工具对于开发者来说,是理解和实践网络通信的重要...
5. **请求与响应**:使用HttpURLConnection,开发者可以通过setRequestMethod("GET")或setRequestMethod("POST")设置请求类型,然后调用connect()方法建立连接。响应数据可以通过getInputStream()获取,通常需要进行...
outputStream.writeBytes("Content-Type: " + URLConnection.guessContentTypeFromName(file.getName()) + "\r\n\r\n"); Files.copy(file.toPath(), outputStream); outputStream.writeBytes("\r\n"); } } ``` 4...
本文将详细介绍如何在Android中使用HttpURLConnection进行网络编程,包括设置请求方法、获取响应码、处理GET和POST请求以及实现多线程下载,并涉及权限控制和布局文件的使用。 首先,设置请求方法是通过`...
它定义了一种轻量级的格式,用于通过Web交换结构化的和固化的信息。 2. **HTTP (Hypertext Transfer Protocol)**:超文本传输协议,是用于从WWW服务器传输超文本到本地浏览器的传送协议。`WebService`通常通过HTTP...
System.out.println("\nSending 'POST' request to URL : " + postUrl); System.out.println("Response Code : " + responseCode); // 读取响应 BufferedReader in = new BufferedReader(new InputStreamReader...
在 Android Studio 中调用 Restful WCF 接口需要使用 Java 的标准类 HttpURLConnection,该类继承自 URLConnection,提供了访问 HTTP 协议的基本功能,能够向指定网站发送 GET 请求和 POST 请求。但是,在 Android ...
- 创建连接:`HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();` - 设置请求方法:`urlConnection.setRequestMethod("GET");`或`urlConnection.setRequestMethod("POST");` - 发送...
本实例将详细解释如何使用`UrlConnection`来实现这一功能,包括设置请求头、发送POST数据以及处理响应。 首先,我们需要创建一个HTTP连接。在示例代码中,我们首先构建了一个URL对象,并通过`openConnection()`方法...
`Applet`使用`java.net.HttpURLConnection`类或者`java.net.URLConnection`类来创建连接并发送请求。 2. **GET请求**:`Applet`也可以发送GET请求获取`Servlet`的数据。这种情况下,请求参数通常包含在URL中。`...
另一种方式是Applet直接通过URLConnection或HttpURLConnection与Servlet通信,发送请求并接收响应。 2. **URLConnection类**: - TestURLConnection这个文件可能是一个演示如何使用URLConnection来建立Servlet和...
Java的HttpURLConnection类可以直接处理HTTP请求和响应,方便地进行文件上传下载、POST请求等操作。 【WebSocket协议与实时通信】 为了实现在线观看视频、留言和发弹幕等功能,项目可能使用了WebSocket协议。...
在Java中,可以使用`URLConnection`或`java.net.HttpURLConnection`来构造POST请求。 3.HttpSoap调用: HttpSoap协议适用于SOAP(简单对象访问协议)消息传输。SOAP消息在HTTP请求正文中发送,响应也在HTTP响应正文...