`

URLConnection的GET和POST, 请高手帮忙

    博客分类:
  • java
阅读更多
这个是我客户端的程序,主要是通过servlet向它后台传递参数:
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

public class Test {
	public static void main(String[] args) throws IOException {
		String urlStr = "http://localhost:9999/ServletTest/TestServlet";
		URLConnection connection = null;
		OutputStream oStream = null;
		InputStream iStream = null;
		boolean result = false;
		try {
			URL url = new URL(urlStr);
			connection = url.openConnection();
			connection.setRequestProperty("Content-Type",
					"application/x-www-form-urlencoded");
			connection.setDoOutput(true);
			OutputStreamWriter out = new OutputStreamWriter(connection
					.getOutputStream());
			out.write("id=1111");
			out.close();
			
			connection.connect();
			iStream = connection.getInputStream();
			result = processServerResponse((HttpURLConnection)connection, iStream);
			System.out.println(result);
		} finally {
			if (iStream != null)
				iStream.close();
			if (oStream != null)
				oStream.close();
		}

	}

	private static boolean processServerResponse(HttpURLConnection http,
			InputStream iStrm) throws IOException {
		String errorMsg = null;
		if (http.getResponseCode() == HttpURLConnection.HTTP_OK) {
			int length = http.getContentLength();
			String str;
			if (length != -1) {
				byte servletData[] = new byte[length];
				iStrm.read(servletData);
				str = new String(servletData);
			} else {
				ByteArrayOutputStream bStrm = new ByteArrayOutputStream();
				int ch;
				while ((ch = iStrm.read()) != -1)
					bStrm.write(ch);

				str = new String(bStrm.toByteArray());
				bStrm.close();
			}
			System.out.println(str);
			return true;
		} else {
			errorMsg = new String(http.getResponseMessage());
		}
		return false;
	}

}


这个是我的服务器端的程序:

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;

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

@SuppressWarnings("serial")
public class TestServlet extends HttpServlet {
	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		InputStream in = request.getInputStream();
		byte[] texts = new byte[request.getContentLength()];
		
		in.read(texts);
		System.out.println(new String(texts));
		
		String message = request.getParameter("id");
		System.out.println("message"+message);
		try {
			message += " 200 ok";
		} catch (Throwable t) {
			message += " 100 " + t.toString();
		}
		response.setContentType("text/plain");
		response.setContentLength(message.length());
		PrintWriter out = response.getWriter();
		out.println(message);
		in.close();
		out.close();
		out.flush();
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doPost(request, response);
	}

}

这个是服务器端输出:
id=1111
messagenull

但我们看到,调用String message = request.getParameter("id");得到的是null,但我把url改成:
String urlStr = "http://localhost:9999/ServletTest/TestServlet?id=1111";

这样就能够正确的输出message了。 但根据request的GET和POST请求,应该可以用POST方式传参数,我看了一下SUN网站上的一个例子,他是用字符串解析的,难道没有好的方法吗?
http://java.sun.com/docs/books/tutorial/networking/urls/examples/ReverseServlet.java

但我看到J2ME的HttpConnection,好像可以实现。
http://www.java-tips.org/java-me-tips/midp/sending-data-to-servlet-and-getting-the-response.html



分享到:
评论
2 楼 asialee 2010-04-21  
zhouzhichu 写道
跨域post不行的

不明白跨域,能详细解释一下吗,谢谢了。
1 楼 zhouzhichu 2010-04-21  
跨域post不行的

相关推荐

    java中用URLConnection_类post方式提交表单

    下面是使用URLConnection类post方式提交表单的详细实现步骤和相关知识点: 一、URLConnection类概述 java.net.URLConnection类是java语言中实现HTTP、FTP、FILE等网络协议的核心类。该类提供了统一的接口来处理...

    java中用URLConnection类post方式提交表单.pdf

    * 使用 URLConnection 类可以实现 GET 和 POST 请求。 * 使用 URLEncoder 对参数进行编码,避免了编码问题。 该技术的缺点是: * 需要掌握 Java 语言和 HTTP 协议的基础知识。 * 需要了解 URLConnection 类和 ...

    https网络请求,包含get和post形式

    首先,我们要理解GET和POST的区别。GET请求通常用于获取资源,其参数包含在URL中,可见且有长度限制;而POST请求则用于向服务器发送数据,参数在请求体中,可以传输更多数据且相对隐蔽。 在Java中实现HTTPS网络请求...

    http请求(get和post)的java实现

    在Java中,我们可以使用`java.net.URL`和`java.net.URLConnection`类来实现GET请求。然而,这里没有给出GET请求的实现代码,通常做法是创建URL对象,打开连接,然后从`getInputStream()`中读取响应。 ### 2. POST...

    URL以及URLConnection的使用

    除了基本的GET和POST请求,URLConnection还可以处理PUT、DELETE等HTTP方法,并且支持自定义HTTP头和设置超时等高级功能。此外,还可以通过设置`setAllowUserInteraction`和`setUseCaches`控制用户交互和缓存策略。 ...

    Java实现HTTP(GET、POST)请求

    在Java中,可以使用`java.net.URL`和`java.net.URLConnection`类来发送GET请求。以下是一个简单的示例: ```java URL url = new URL("http://example.com"); URLConnection connection = url.openConnection(); ...

    网络请求----HttpURLConnection的get,post和图片加载

    总之,HttpURLConnection是Java开发中处理HTTP请求的重要工具,熟练掌握其GET、POST方法和图片加载,能帮助开发者构建高效、稳定的网络通信功能。在实际应用中,应结合最佳实践和性能优化技巧,提升用户体验。

    java URL URLConnection

    在实际开发中,`URL`和`URLConnection`通常用于简单的GET请求,而复杂的网络操作往往依赖于更强大的库。然而,理解这些基础类的工作原理对于深入学习网络编程和优化性能至关重要。同时,自定义`URLConnection`子类...

    httpClient和URLConnection的区别

    在Android应用开发中,进行网络...而如果只需要进行简单的GET或POST请求,HttpURLConnection的简洁性和低资源消耗可能会更具优势。在实际开发中,应根据项目的规模、性能需求和兼容性要求来决定使用哪种网络请求方式。

    客户端页面截取!URLCONNECTION

    在IT行业中,客户端页面截取是一项常见的需求...虽然HttpClient在许多场景下更受欢迎,但了解和掌握URLCONNECTION的使用也能增强我们解决网络通信问题的能力。在实际开发中,选择哪种方式取决于具体的需求和项目规模。

    JDK中的URLConnection参数详解

    Java JDK 中的 `URLConnection` 是一个非常重要的网络通信接口,它是`java.net.URL`类的主要功能接口,用于打开和管理到互联网对象的连接。在本文中,我们将深入探讨`URLConnection`的一些关键特性和参数,特别是在...

    java URLConnection全面解析(通俗易懂,包括cookie操作和上传文件)

    通过本文,我们不仅了解了如何使用`URLConnection`发送GET和POST请求,还学习了如何处理Cookie、上传文件及下载网页等内容。这对于构建Web应用或进行网络编程都是非常有用的技能。当然,实际开发中还可能遇到更多...

    URLConnection进行网络编程

    在Android开发中,`URLConnection`是Java标准库提供的一个基础网络通信组件,它允许应用程序通过打开到指定URL的连接来读取和写入数据。在本文中,我们将深入探讨如何使用`URLConnection`进行网络编程,并结合提供的...

    java使用url发送post和get请求:HttpConnUtils.jar

    在Java编程语言中,HTTP(超文本传输协议)是客户端与服务器端进行通信的主要方式,主要分为GET和POST两种请求方法。GET请求通常用于获取数据,而POST请求用于提交数据。`HttpConnUtils.jar`是一个Java工具类库,它...

    URLConnection的使用(1)

    通过以上介绍,我们可以了解到`URLConnection`提供了一种简单有效的方式来处理HTTP请求和响应,无论是GET还是POST请求,都可以通过这种方式来实现。此外,在实际应用中还需要注意各种细节问题,例如异常处理、资源...

    Java如何实现URL带请求参数(get/post)及得到get和post请求url和参数列表的方法

    本文将深入探讨如何在Java中实现URL带请求参数(GET/POST)以及如何获取这两种请求的URL和参数列表。 首先,我们来看如何发送带有参数的GET和POST请求。在Java中,我们可以使用`java.net.URL`和`java.net....

    Android使用URLConnection提交请求的实现

    本文将详细介绍如何在Android应用中使用`URLConnection`来提交HTTP请求,包括GET和POST两种常见方式。 首先,我们需要理解`URLConnection`的基本用法。`URLConnection`是所有URL连接的抽象基类,通过`URL`对象的`...

    通过java.net.URLConnection发送HTTP请求

    URLConnection对象提供了设置请求属性的方法,如设置请求方法(GET、POST等)、设置请求头(如User-Agent、Content-Type等)以及设置超时等。例如,要发送POST请求并设置Content-Type为application/json,可以这样做...

    java URLConnection总结(经典易懂)

    通过以上总结,你可以更好地理解如何使用Java URLConnection进行网络通信,包括发送GET和POST请求,以及处理登录和其他需要发送数据的情况。在实际项目中,结合具体的业务需求,这些知识将有助于实现高效且安全的...

Global site tag (gtag.js) - Google Analytics