`
sbfivwsll
  • 浏览: 63517 次
  • 性别: Icon_minigender_1
  • 来自: 四川
社区版块
存档分类
最新评论

用HttpURLConnection在服务器端发起HTTP Post请求的例子

 
阅读更多

通常情况下,http请求都是从浏览器端发起的,如提交一个表单,或点击一个链接,都会对服务器发送一个http请求。

但如果我们想在服务器发出一个http请求,如何才能做到呢,如果只是简单的http访问,java.net.URL就足够了,如:

URL url = new URL("http://www.baidu.com");

InputStream ins = url.openStream();

//通过这个InputStream对象就可拿到返回的HTML代码

 

 

但如果我们要从服务器对远程URL发出http post访问,并且要传递一些参数,甚至还要设置某些Cookie值,那就要

借助HttpURLConnection这个类了,我们可以用URL.openConnection()方法来得到这个类的对象,具体请看下例:

 

protected void doPost(HttpServletRequest request,

HttpServletResponse response) throws Exception {

 

HttpURLConnection httpConn = null;

try {

StringBuffer paramData = getQueryString(request);

String urlString = "http://localhost:8080/myweb/login.do";

 

URL url = new URL(urlString);

httpConn = (HttpURLConnection) url.openConnection();

httpConn.setDoInput(true);

httpConn.setDoOutput(true);

httpConn.setRequestMethod("POST");

httpConn.setRequestProperty("Content-Type",

"application/x-www-form-urlencoded");

String cookieString = getCookieString(request);

if (cookieString.length() > 0) // 往远程URL传递Cookie值

httpConn.setRequestProperty("Cookie", cookieString);

 

OutputStream os = httpConn.getOutputStream();

os.write(paramData.toString().getBytes()); // 往远程URL传递参数

os.flush();

os.close();

 

int code = httpConn.getResponseCode();

if (code == 200) { // 返回成功

BufferedReader reader = new BufferedReader(

new InputStreamReader(httpConn.getInputStream(), "utf-8"));

String line;

StringBuffer buffer = new StringBuffer();

while((line = reader.readLine()) != null) {

buffer.append(line).append("/n");

}

} else { // 访问失败

//forward error page

throw new Exception("Error occur when try to visit the url:" +

url.getPath() + " using HttpURLConnection");

}

} catch (Exception ex) {

throw new Exception("Error occur execute " +

"HttpRemoteProxy.performImpl(), the caused by " + ex);

} finally {

if (httpConn != null)

httpConn.disconnect();

}

}

 

/*

* 得到request所有的请求参数,并连接起来

*/

private StringBuffer getQueryString(HttpServletRequest request)

throws Exception {

 

Enumeration paramNames = request.getParameterNames();

StringBuffer paramData = new StringBuffer();

while (paramNames.hasMoreElements()) {

String name = (String)paramNames.nextElement();

String value = request.getParameter(name);

value = URLDecoder.decode(value, "utf-8");

paramData.append(name).append("=").append(value).append("&");

}

if (paramData.length() > 0) //delete the last char '&'

paramData.deleteCharAt(paramData.length() - 1);

return paramData;

}

 

/*

* 得到所有的cookie,并把它们连接起来

*/

private String getCookieString(HttpServletRequest request) throws Exception {

Cookie[] cookies = request.getCookies();

StringBuffer buffer = new StringBuffer();

for (int i = 0; i < cookies.length; i++) {

Cookie cookie = cookies[i];

String value = cookie.getValue();

String name = cookie.getName();

if (value != null && !value.equals(""))

buffer.append(name).append("=").append(value).append(";");

}

if (buffer.length() > 0)

buffer.deleteCharAt(buffer.length() - 1);//delete the last char ';'

return buffer.toString();

}

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Linyufa/archive/2009/07/23/4373929.aspx

分享到:
评论

相关推荐

    Android客户端与服务器端通信Demo

    在Android应用开发中,客户端与服务器端的通信是不可或缺的一部分,它使得移动设备能够获取、发送数据,实现功能如登录注册、数据同步、文件上传下载等。本Demo着重展示了这一核心概念,通过实例来帮助开发者理解和...

    Android客户端和服务器交互例子

    首先,Android客户端通常使用HTTP库,如OkHttp或HttpURLConnection,来发起HTTP请求。在这个例子中,客户端可能创建一个POST请求,将用户名和密码作为参数发送到服务器。请求的数据通常会被编码为JSON格式,因为JSON...

    简单的Http方式服务器与 android客户端的交互Demo

    - POST请求则会在请求体中携带数据。服务器需要解析请求体,获取数据,然后执行相应的操作,比如存储数据到数据库。 2. **Android客户端实现**: - Android客户端通过使用HttpURLConnection或第三方库如OkHttp来...

    Java Servlet实现HTTP通信的例子.rar

    在这个例子中,Servlet被用作服务器端的组件,接收来自Android客户端的HTTP请求,并返回相应的数据。 Servlet的工作原理是:当一个HTTP请求到达服务器时,服务器会创建一个Servlet实例来处理该请求。Servlet通过...

    安卓开发之简单的通过服务器端验证密码登录

    4. **服务器端Servlet**:服务器端通常会有一个Servlet接收并处理这些POST请求。这个Servlet会检查接收到的用户名和密码,然后返回相应的验证结果。这部分代码不在安卓应用内,但需要注意的是,为了安全起见,服务器...

    android请求webservice

    在Android开发中,与Web服务交互是...总的来说,这个例子涵盖了Android应用与WebService交互的基本流程,包括客户端发起POST请求和服务器端接收处理请求。理解这些概念和技术对于任何Android开发者来说都是至关重要的。

    Android 客户端与服务器通讯的小例子

    这个小例子将探讨如何在Android客户端使用HTTP协议与服务器进行通讯,我们将主要关注两个方面:使用HTTPClient进行网络请求以及处理响应。 首先,Android客户端与服务器通讯通常基于HTTP或HTTPS协议,这是因为它们...

    android客户端与servlet服务端交互的很好的例子

    在Android开发中,客户端与服务器端的交互是应用程序的核心部分,尤其当涉及到数据交换和远程服务调用时。本示例主要关注Android客户端如何与Servlet服务端进行有效的通信,涉及了多种数据传输方式,如传递参数、...

    Android 例子源码

    在Android开发中,数据交互是不可或缺的一部分,尤其是在网络通信中,`Servlet` 是Java服务器端编程的一个重要组件,常用于处理客户端(如Android应用)发送的HTTP请求。本示例源码提供了Android与Servlet进行数据...

    android连接mysql的例子

    - 使用Android的`HttpURLConnection`或第三方库如`Volley`、`OkHttp`来发起HTTP请求,与服务器进行通信。 - `AsyncTask`或`Retrofit`可以用来处理网络操作,避免阻塞主线程,提供更好的用户体验。 2. **JSON数据...

    小白用VB开发安卓程序-例程2、网络编程之用PHP实现APP登录

    在Android应用开发中,我们可以使用HttpURLConnection或第三方库如Volley、Retrofit等来发起HTTP请求。VB.NET,尽管通常用于Windows桌面应用,但也有能力创建Android应用,这通常通过 Mono for Android 或 Xamarin ...

    华住会返回字节流分析1

    在Android中,应用可以使用HTTP客户端库(如HttpURLConnection或OkHttp)来发起网络请求,这里的请求格式和头部信息符合Android应用的行为。 【数据加密与签名】 在请求体中,有三个关键字段:Data、sign和APPSIGN...

    HttpsMessage例子

    当客户端(如浏览器)想要从服务器获取资源时,它会发送一个HTTP请求,而在服务器端接收到这个请求后,会返回一个HTTP响应。在HTTPS中,这些消息都会被加密,以防止中间人攻击和其他形式的安全威胁。 `HttpsMessage...

    跨服务器传递参数

    在Java中,我们可以使用HTTP客户端库,如Apache HttpClient或Spring的RestTemplate,来向其他服务器发起POST或GET请求,携带我们需要传递的参数。在JSP中,我们可以通过Java Servlet API来创建HttpURLConnection对象...

    android通过PHP操作mysql例子

    3. **Android客户端**:在Android应用中,使用`HttpURLConnection`或`OkHttp`库发起HTTP请求。创建一个函数,如`sendProductData()`,用于发送POST请求,包含产品数据(转换为JSON格式)。同时,创建另一个函数,如`...

    android web service 例子源代码

    在Android开发中,Web服务是将移动应用与服务器端数据进行交互的重要手段。Web服务允许Android设备通过HTTP协议发送请求并接收响应,实现数据的获取、更新或删除。本资源包含了一个具体的Android Web服务示例的源...

    Android与Tomcat远程访问

    在移动应用开发中,常常需要实现客户端(如Android应用)与服务器端(如Tomcat服务器)的数据交互,以便完成注册、登录、数据存储等核心功能。本文将深入探讨如何实现Android应用通过HTTP协议与运行在Tomcat服务器上...

    Java通过HttpURLConnection与servlet通信

    - **方法覆盖**:通常我们需要重写`doGet`和`doPost`方法,因为它们分别对应HTTP的GET和POST请求。在这个例子中,`doGet`被重定向到`doPost`,意味着无论哪种请求方式,都会执行`doPost`里的代码。 - **处理请求**...

    FirstServlet

    在Android应用中,我们可以使用HttpURLConnection或者第三方库如Volley、OkHttp等来发起HTTP请求。Servlet则在服务器端接收这些请求,处理业务逻辑,如数据库操作,然后返回响应数据。这个入门代码可能包括了Android...

    Connection-for-Android---php:通过POST函数将参数传递给服务器

    总结,Android应用通过Java的`HttpURLConnection`可以方便地发起POST请求,将数据传送到服务器;而服务器端的PHP可以通过`php://input`获取这些数据,并进行相应的处理和响应。这种方式在Android与服务器之间的数据...

Global site tag (gtag.js) - Google Analytics