如何用get方post方式向http接口发送数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用get方post方式向http接口发送数据相关的知识,希望对你有一定的参考价值。
参考技术A 本节摘要:本节主要分别介绍如何用get方式、post方式向http接口发送数据。 preparation1. 项目环境如下:
myeclipse6.5 、tomcat5.0、system:xp、JDK:开发1.5,编译1.4
为了方便,在原来的web项目UpDown中新建了一个httpcall包,用来保存http接口和调用的客户端。
2.准备需要的jar包
* commons-httpclient-3.0.jar
* commons-logging.jar
* commons-codec-1.3.jar
3.class&method
HttpClient:
GetMethod:
PostMethod:
start
接口写了一个servlet来接收客户端get/post的请求
web.xml需要加入以下配置:
<!-- 模拟HTTP的调用,写的一个http接口 -->
<servlet>
<servlet-name>TestHTTPServer</servlet-name>
<servlet-class>httpcall.TestHTTPServer</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestHTTPServer</servlet-name>
<url-pattern>/httpServer</url-pattern>
</servlet-mapping>
TestHTTPServer.java的代码如下:
TestHTTPServer
1 package httpcall;
2
3 import java.io.IOException;
4 import java.io.PrintWriter;
5 import javax.servlet.ServletException;
6 import javax.servlet.http.HttpServlet;
7 import javax.servlet.http.HttpServletRequest;
8 import javax.servlet.http.HttpServletResponse;
9
10 /**
11 *Module: TestHTTPServer.java
12 *Description: 为了验证http接口的调用,编写了一个模拟的http接口
13 *Company:
14 *Author: ptp
15 *Date: Feb 22, 2012
16 */
17
18 public class TestHTTPServer extends HttpServlet
19
20 private static final long serialVersionUID = 1L;
22 public void doGet(HttpServletRequest request, HttpServletResponse response)
23 throws ServletException, IOException
24 response.setCharacterEncoding("gbk");
25
26 PrintWriter out = response.getWriter();
27 String param1 = request.getParameter("param1");
28 out.println("param1=" + param1);
29 String param2 = request.getParameter("param2");
30 out.println("param2=" + param2);
31 if (param1 == null || "".equals("param1") || param1.length() <= 0) 32 out.println("http call failed,参数param1不能为空,程序退出"); 33 else if (param2 == null || "".equals("param2")
34 || param2.length() <= 0)
35 out.println("http call failed,参数param2不能为空,程序退出"); 36 else
37 out.println("---http call success---");
38
39 out.close();
40
41
42 public void doPost(HttpServletRequest request, HttpServletResponse response)
43 throws ServletException, IOException
44 this.doGet(request, response);
45
46
HttpClientUtil.java的代码如下:
HttpClientUtil
1 package httpcall;
3 import java.io.IOException;
4 import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; 5 //import org.apache.commons.httpclient.Header;
6 import org.apache.commons.httpclient.HttpClient;
7 import org.apache.commons.httpclient.HttpException;
8 //import org.apache.commons.httpclient.HttpStatus;
9 import org.apache.commons.httpclient.methods.GetMethod;
10 import org.apache.commons.httpclient.methods.PostMethod;
11 import org.apache.commons.httpclient.params.HttpMethodParams;
12 //import org.apache.commons.httpclient.NameValuePair;
13 import org.apache.commons.logging.Log;
14 import org.apache.commons.logging.LogFactory;
15
16 /**
17 *
18 *Module: HttpClientUtil.java
19 *Description: 以get/post的方式发送数据到指定的http接口---利用httpclient.jar包---HTTP接口的调用
20 *Company:
21 *Author: ptp
22 *Date: Feb 22, 2012
23 */
24
25 public class HttpClientUtil
26
27 private static final Log log = LogFactory
28 .getLog(HttpClientUtil.class);
29
30 /**
31 * get方式
32 * @param param1
33 * @param param2
34 * @return
35 */
36 public static String getHttp(String param1,String param2)
37 String responseMsg = "";
38
39 // 1.构造HttpClient的实例
40 HttpClient httpClient = new HttpClient();
41
42 // 用于测试的http接口的url
43 String url="http://localhost:8080/UpDown/httpServer?param1="+param1+"¶m2="+param2; 44
45 // 2.创建GetMethod的实例
46 GetMethod getMethod = new GetMethod(url);
47
48 // 使用系统系统的默认的恢复策略
49 getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, 50 new DefaultHttpMethodRetryHandler());
51
52 try
53 //3.执行getMethod,调用http接口
54 httpClient.executeMethod(getMethod);
55
56 //4.读取内容
57 byte[] responseBody = getMethod.getResponseBody();
58
59 //5.处理返回的内容
60 responseMsg = new String(responseBody);
61 log.info(responseMsg);
62
63 catch (HttpException e)
64 e.printStackTrace();
65 catch (IOException e) 本回答被提问者和网友采纳
如何用php向服务器发送post请求
应用的api写在服务器的***/update_device/目录下,数据格式:id=%s&system_name=%s&system_version=%s&device_type=%s,数据的值都已经获取了,用php如何将数据传到服务器,以获取回应?
好心人请加gmail帮助,加分补偿。gmail:zhengyue@mapiz.com
用PHP向服务器发送HTTP的POST请求,代码如下:
<?php/**
* 发送post请求
* @param string $url 请求地址
* @param array $post_data post键值对数据
* @return string
*/
function send_post($url, $post_data)
$postdata = http_build_query($post_data);
$options = array(
\'http\' => array(
\'method\' => \'POST\',
\'header\' => \'Content-type:application/x-www-form-urlencoded\',
\'content\' => $postdata,
\'timeout\' => 15 * 60 // 超时时间(单位:s)
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
return $result;
使用的时候直接调用上面定义的send_post方法:
$post_data = array(\'username\' => \'username\',
\'password\' => \'password\'
);
send_post(\'网址\', $post_data); 参考技术A 你问的是怎么保存数据库???
既然数据都获取了
你可以选择保存文件或数据库或只是用来操作而已
然后不明白你说啥-。-追问
用户登录后,采集到了用户id、浏览器类型等信息,将这些信息发送到服务器,服务器返回相应的服务。我问的是:如何用php将用户id等以post方法传到服务器上。明白了吗?
追答你问如何传数据到服务器??
方式很多啊
你就算不会web编程也用过吧
到处随处可见的登录表单
就是表单提交啊-。-
就这么简单
不能用表单啊。这是嵌入到社交网站上的一个应用,用户添加应用后,不用再用表单提交了啊!有没有其他post方式
追答其实我不懂你的意思-。-
如果你是初学者 那你加强吧
以上是关于如何用get方post方式向http接口发送数据的主要内容,如果未能解决你的问题,请参考以下文章
如何用nodejs通过post发送multipart/form-data类型的http请求