JAVA-用HttpClient来模拟浏览器GET,POST
JAVA实现简单的HTTP服务器端

writer.println("Accept-Encoding: gzip, deflate");
writer.println("Host: ");
writer.println("Connection: Keep-Alive");
writer.println();
writer.flush();
String line = reader.readLine();
writer.println("User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)");
writer.println("GET /home.html HTTP/1.1&ln("Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*");
javahttpput请求方式_使用HttpClient发送GETPOSTPUTDe

javahttpput请求方式_使用HttpClient发送GETPOSTPUTDe在Java中,我们可以使用HttpClient库来发送HTTP请求,包括GET、POST、PUT、DELETE等请求方式。
下面是使用HttpClient发送这些请求的示例代码。
1.发送GET请求:```javapublic class HttpGetExamplepublic static void main(String[] args) throws Exceptionint statusCode = response.getStatusLine(.getStatusCode(;System.out.println("Status Code: " + statusCode);//处理响应数据//...}```2.发送POST请求:```javapublic class HttpPostExamplepublic static void main(String[] args) throws Exception//设置请求体StringEntity requestBody = new StringEntity("request body", "UTF-8");int statusCode = response.getStatusLine(.getStatusCode(;System.out.println("Status Code: " + statusCode);//处理响应数据//...}```3.发送PUT请求:```javapublic class HttpPutExamplepublic static void main(String[] args) throws Exception//设置请求体StringEntity requestBody = new StringEntity("request body", "UTF-8");int statusCode = response.getStatusLine(.getStatusCode(;System.out.println("Status Code: " + statusCode);//处理响应数据//...}```4.发送DELETE请求:```javapublic class HttpDeleteExamplepublic static void main(String[] args) throws Exceptionint statusCode = response.getStatusLine(.getStatusCode(;System.out.println("Status Code: " + statusCode);//处理响应数据//...}```以上代码示例了如何使用HttpClient库发送GET、POST、PUT、DELETE请求,并处理响应数据。
java中的post的方法

java中的post的方法在Java中,HTTP POST方法用于向指定的URL提交数据。
它是用来向服务器提交数据,并在服务器上创建新的资源的一种请求方法。
在Java中,我们可以使用不同的方式来实现HTTP POST请求,包括使用原生的Java API、使用第三方库或框架等。
下面我们将介绍在Java中实现HTTP POST请求的一些常用方法。
1. 使用原生的Java API实现HTTP POST请求在Java中,我们可以使用原生的Java API来实现HTTP POST请求。
下面是一个简单的例子:javaimport java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import .HttpURLConnection;import .URL;import java.nio.charset.StandardCharsets;public class HttpPostExample {public static void main(String[] args) throws IOException { String url = "String data = "param1=value1¶m2=value2";byte[] postData = data.getBytes(StandardCharsets.UTF_8);int postDataLength = postData.length;URL obj = new URL(url);HttpURLConnection con = (HttpURLConnection)obj.openConnection();con.setDoOutput(true);con.setRequestMethod("POST");con.setRequestProperty("Content-Type","application/x-www-form-urlencoded");con.setRequestProperty("Content-Length",Integer.toString(postDataLength));try (OutputStream os = con.getOutputStream()) {os.write(postData);}StringBuilder response = new StringBuilder();try (BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()))) {String inputLine;while ((inputLine = in.readLine()) != null) {response.append(inputLine);}}System.out.println(response.toString());}}在上面的例子中,我们使用了`HttpURLConnection`来发送HTTP POST请求。
JAVA调用HTTP接口POST或GET实现方式

JAVA调⽤HTTP接⼝POST或GET实现⽅式HTTP是⼀个客户端和服务器端请求和应答的标准(TCP),客户端是终端⽤户,服务器端是⽹站。
通过使⽤Web浏览器、⽹络爬⾍或者其它的⼯具,客户端发起⼀个到服务器上指定端⼝(默认端⼝为80)的HTTP请求。
具体POST或GET实现代码如下:package com.yoodb.util;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import mons.httpclient.DefaultHttpMethodRetryHandler;import mons.httpclient.HttpClient;import mons.httpclient.HttpException;import mons.httpclient.methods.GetMethod;import mons.httpclient.methods.PostMethod;import mons.httpclient.params.HttpMethodParams;public class HttpConnectUtil {private static String DUOSHUO_SHORTNAME = "yoodb";//多说短域名 ****.yoodb.****private static String DUOSHUO_SECRET = "xxxxxxxxxxxxxxxxx";//多说秘钥/*** get⽅式* @param url* @author * @return*/public static String getHttp(String url) {String responseMsg = "";HttpClient httpClient = new HttpClient();GetMethod getMethod = new GetMethod(url);getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,new DefaultHttpMethodRetryHandler());try {httpClient.executeMethod(getMethod);ByteArrayOutputStream out = new ByteArrayOutputStream();InputStream in = getMethod.getResponseBodyAsStream();int len = 0;byte[] buf = new byte[1024];while((len=in.read(buf))!=-1){out.write(buf, 0, len);}responseMsg = out.toString("UTF-8");} catch (HttpException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {//释放连接getMethod.releaseConnection();}return responseMsg;}/*** post⽅式* @param url* @param code* @param type* @author * @return*/public static String postHttp(String url,String code,String type) {String responseMsg = "";HttpClient httpClient = new HttpClient();httpClient.getParams().setContentCharset("GBK");PostMethod postMethod = new PostMethod(url);postMethod.addParameter(type, code);postMethod.addParameter("client_id", DUOSHUO_SHORTNAME);postMethod.addParameter("client_secret", DUOSHUO_SECRET);try {httpClient.executeMethod(postMethod);ByteArrayOutputStream out = new ByteArrayOutputStream();InputStream in = postMethod.getResponseBodyAsStream();int len = 0;byte[] buf = new byte[1024];while((len=in.read(buf))!=-1){out.write(buf, 0, len);}responseMsg = out.toString("UTF-8");} catch (HttpException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {postMethod.releaseConnection();}return responseMsg;}}1、下⾯说⼀下多说单点登录(SSO)获取access_token访问多说API的凭证。
request请求获取参数的实现方法(post和get两种方式)

request请求获取参数的实现方法(post和get两种方式)在Web开发中,GET和POST是两种常见的HTTP请求方法。
GET方法用于从服务器获取数据,而POST方法用于向服务器提交数据。
使用这两种方法请求时,可以通过URL传递参数(GET)或将参数添加到请求体中(POST)。
下面会详细介绍GET和POST请求获取参数的实现方法。
1.GET请求获取参数:GET请求将参数添加到请求URL的查询字符串中,参数之间使用"&"符号分隔。
可以通过多种方式进行参数传递,比如在URL中添加参数、使用表单元素的值等。
在后端服务中可以使用不同的语言(如Java、Python、Node.js等)来获取这些参数。
1.1在URL中添加参数:在后端服务中,可以使用以下方式来获取GET请求的参数:- Java Servlet:```javaString param1 = request.getParameter("param1");String param2 = request.getParameter("param2");```- Python Flask:```pythonfrom flask import requestparam1 = request.args.get('param1')param2 = request.args.get('param2')```- Node.js Express:```javascriptconst express = require('express');const app = express(;app.get('/path', (req, res) =>const param1 = req.query.param1;const param2 = req.query.param2;});```1.2使用表单元素的值:在HTML页面中,可以使用表单来传递GET请求的参数。
java的post,get,put,delete对应数据库用法

java的post,get,put,delete对应数据库用法一、引言在Java中,post,get,put,delete是常见的HTTP请求方法,用于在Web应用程序中进行数据交互。
而在数据库操作中,我们通常使用SQL语句来执行增删查改操作。
那么,如何将这几种HTTP请求方法与数据库操作结合起来呢?本文将详细介绍Java中的post,get,put,delete请求方法对应数据库的用法。
二、Java中的HTTP请求方法1. POST:用于提交数据到服务器,通常用于创建或更新数据。
2. GET:用于获取数据,通常用于查询服务器上的数据。
3. PUT:用于更新单个资源,通常用于更新服务器上的数据。
4. DELETE:用于删除资源,通常用于删除服务器上的数据。
三、数据库操作1. 插入(Insert):使用SQL语句的INSERT INTO...VALUES...将数据插入数据库表中。
对应GET请求方法,可通过查询数据库表获取需要插入的数据。
2. 查询(Select):使用SQL语句的SELECT...FROM...来查询数据库表中的数据。
对应POST和GET请求方法,可以提交查询条件到服务器,或者通过GET请求直接查询服务器上的数据。
3. 更新(Update):使用SQL语句的UPDATE...SET...WHERE...来更新数据库表中的数据。
对应PUT请求方法,可以提交需要更新的数据到服务器。
4. 删除(Delete):使用SQL语句的DELETE FROM...来删除数据库表中的数据。
对应DELETE请求方法,可以提交需要删除的数据到服务器。
四、Java代码示例以MySQL数据库为例,展示如何使用Java的post,get,put,delete请求方法进行数据库操作。
1. POST请求并插入数据:```java// 创建连接对象Connection conn =DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb ", "username", "password");// 创建PreparedStatement对象并执行插入操作PreparedStatement pstmt = conn.prepareStatement("INSERT INTO mytable (column1, column2) VALUES (?, ?)");pstmt.setString(1, "value1");pstmt.setString(2, "value2");pstmt.executeUpdate();```2. GET请求并查询数据:```java// 创建连接对象Connection conn =DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb ", "username", "password");// 创建Statement对象并执行查询操作Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("SELECT * FROM mytable WHERE column1 = 'value1'");// 处理查询结果集while (rs.next()) {// 输出查询到的数据System.out.println(rs.getString("column2"));}```3. PUT请求并更新数据:PUT请求和更新数据库表中的数据的示例代码相似于POST请求和插入数据的示例代码,只不过在SQL语句中使用了UPDATE...SET...WHERE...来更新数据。
解决java请求带headers的具体操作步骤-概述说明以及解释

解决java请求带headers的具体操作步骤-概述说明以及解释1.引言1.1 概述在进行Java网络编程时,我们经常需要向服务器发送HTTP请求,并在请求中附带一些自定义的头部信息(headers)。
HTTP请求头部可以包含诸如身份验证、请求类型、数据格式等重要信息,因此了解如何解决Java 请求带头部的问题是非常重要的。
本文将介绍如何在Java中进行HTTP请求时携带头部信息的具体操作步骤。
我们将探讨使用Java的标准库以及一些常用的第三方库来实现此功能。
无论是发送GET请求还是POST请求,我们都将讨论如何设置请求头部以满足我们的需求。
首先,我们将介绍Java标准库中的方法,这些方法提供了基本的HTTP 请求功能。
我们将学习如何创建HTTP连接、设置请求方法、添加头部信息等。
然后,我们将深入研究一些流行的第三方库,如Apache HttpClient 和OkHttp。
这些库提供了更简洁、更灵活的方式来发送HTTP请求并附带头部信息。
通过本文的学习,读者将能够掌握在Java中发送带头部信息的HTTP 请求的技巧和方法。
无论是向RESTful API发送请求还是与其他服务器进行交互,掌握如何设置请求头部信息是非常关键的。
接下来,我们将详细介绍如何进行这些操作,以便读者在实际开发中能够灵活运用。
1.2 文章结构文章结构部分应该包括对整篇文章结构的描述和各个章节的简要介绍。
以下是一个例子:2. 正文在本节中,我们将详细介绍解决Java请求带headers的具体操作步骤。
为了清晰地呈现该主题的内容,我们将文章分为以下几个要点:2.1 第一个要点在这一部分,我们将介绍如何设置请求头(headers)以及它们的作用。
我们将通过示例代码展示如何使用Java代码来添加不同类型的headers。
此外,我们还会讨论一些常见的header字段以及它们的用途和示例。
2.2 第二个要点第二个要点将更进一步探讨如何通过Java发送带headers的请求。
Java如何实现URL带请求参数(getpost)及得到get和post请求url和参数列表的方法

Java如何实现URL带请求参数(getpost)及得到get和post请求url和参数列表的⽅法具体代码如下所⽰:public static String sendGet(String url,String param){String result = "";try{String urlName = url + "?"+param;//URL U = new URL(urlName);URLConnection connection = U.openConnection();connection.connect();BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;while ((line = in.readLine())!= null){result += line;}in.close();}catch(Exception e){System.out.println("Helloword!!"+e);}return result;}public static String sendPost(String url,String param){String result="";try{URL httpurl = new URL(url);HttpURLConnection httpConn = (HttpURLConnection)httpurl.openConnection();httpConn.setDoOutput(true);httpConn.setDoInput(true);PrintWriter out = new PrintWriter(httpConn.getOutputStream());out.print(param);out.flush();out.close();BufferedReader in = new BufferedReader(new InputStreamReader(httpConn.getInputStream()));String line;while ((line = in.readLine())!= null){result += line;}in.close();}catch(Exception e){System.out.println("Helloword!"+e);}return result;}下⾯给⼤家介绍 java得到GET和POST请求URL和参数列表的⽅法在servlet中GET请求可以通过HttpServletRequest的getRequestURL⽅法和getQueryString()得到完整的请求路径和请求所有参数列表,POST的需要getParameterMap()⽅法遍历得到,不论GET或POST都可以通过getRequestURL+getParameterMap()来得到请求完整路径package com.zuidaimaimport java.io.IOException;import java.io.PrintWriter;import java.util.Map;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class GetParams extends HttpServlet {private static final long serialVersionUID = 1L;public GetParams() {super();}protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {PrintWriter writer = response.getWriter();writer.println("GET " + request.getRequestURL() + " "+ request.getQueryString());Map<String, String[]> params = request.getParameterMap();String queryString = "";for (String key : params.keySet()) {String[] values = params.get(key);for (int i = 0; i < values.length; i++) {String value = values[i];queryString += key + "=" + value + "&";}}// 去掉最后⼀个空格queryString = queryString.substring(0, queryString.length() - 1);writer.println("GET " + request.getRequestURL() + " " + queryString);}protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {PrintWriter writer = response.getWriter();Map<String, String[]> params = request.getParameterMap();String queryString = "";for (String key : params.keySet()) {String[] values = params.get(key);for (int i = 0; i < values.length; i++) {String value = values[i];queryString += key + "=" + value + "&";}}// 去掉最后⼀个空格queryString = queryString.substring(0, queryString.length() - 1);writer.println("POST " + request.getRequestURL() + " " + queryString);}}以上代码简单易懂,希望对⼤家学习 java post get url 请求参数的相关⽅法有所帮助,感谢⼤家⼀直以来对⽹站的⽀持,有你们的⽀持,我们会做的更好。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一般的情况下我们都是使用IE或者Navigator浏览器来访问一个WEB服务器,用来浏览页面查看信息或者提交一些数据等等。
所访问的这些页面有的仅仅是一些普通的页面,有的需要用户登录后方可使用,或者需要认证以及是一些通过加密方式传输,例如HTTPS。
目前我们使用的浏览器处理这些情况都不会构成问题。
不过你可能在某些时候需要通过程序来访问这样的一些页面,比如从别人的网页中“偷”一些数据;利用某些站点提供的页面来完成某种功能,例如说我们想知道某个手机号码的归属地而我们自己又没有这样的数据,因此只好借助其他公司已有的网站来完成这个功能,这个时候我们需要向网页提交手机号码并从返回的页面中解析出我们想要的数据来。
如果对方仅仅是一个很简单的页面,那我们的程序会很简单,本文也就没有必要大张旗鼓的在这里浪费口舌。
但是考虑到一些服务授权的问题,很多公司提供的页面往往并不是可以通过一个简单的URL就可以访问的,而必须经过注册然后登录后方可使用提供服务的页面,这个时候就涉及到COOKIE问题的处理。
我们知道目前流行的动态网页技术例如ASP、JSP无不是通过COOKIE来处理会话信息的。
为了使我们的程序能使用别人所提供的服务页面,就要求程序首先登录后再访问服务页面,这过程就需要自行处理cookie,想想当你用.HttpURLConnection来完成这些功能时是多么恐怖的事情啊!况且这仅仅是我们所说的顽固的WEB服务器中的一个很常见的“顽固”!再有如通过HTTP来上传文件呢?不需要头疼,这些问题有了“它”就很容易解决了!我们不可能列举所有可能的顽固,我们会针对几种最常见的问题进行处理。
当然了,正如前面说到的,如果我们自己使用.HttpURLConnection来搞定这些问题是很恐怖的事情,因此在开始之前我们先要介绍一下一个开放源码的项目,这个项目就是Apache开源组织中的httpclient,它隶属于Jakarta的commons项目,目前的版本是2.0RC2。
commons下本来已经有一个net的子项目,但是又把httpclient单独提出来,可见http 服务器的访问绝非易事。
Commons-httpclient项目就是专门设计来简化HTTP客户端与服务器进行各种通讯编程。
通过它可以让原来很头疼的事情现在轻松的解决,例如你不再管是HTTP或者HTTPS 的通讯方式,告诉它你想使用HTTPS方式,剩下的事情交给httpclient替你完成。
本文会针对我们在编写HTTP客户端程序时经常碰到的几个问题进行分别介绍如何使用httpclient来解决它们,为了让读者更快的熟悉这个项目我们最开始先给出一个简单的例子来读取一个网页的内容,然后循序渐进解决掉前进中的所有问题。
1.读取网页(HTTP/HTTPS)内容下面是我们给出的一个简单的例子用来访问某个页面/** Created on 2003-12-14 by Liudong*/package http.demo;import java.io.IOException;import mons.httpclient.*;import mons.httpclient.methods.*;/*** 最简单的HTTP客户端,用来演示通过GET或者POST方式访问某个页面* @author Liudongpublic class SimpleClient {public static void main(String[] args) throws IOException{HttpClient client = new HttpClient();//设置代理服务器地址和端口//client.getHostConfiguration().setProxy("proxy_host_addr",proxy_port);//使用GET方法,如果服务器需要通过HTTPS连接,那只需要将下面URL中的h ttp换成httpsHttpMethod method = new GetMethod("";);//使用POST方法//HttpMethod method = new PostMethod("";);client.executeMethod(method);//打印服务器返回的状态System.out.println(method.getStatusLine());//打印返回的信息System.out.println(method.getResponseBodyAsString());//释放连接method.releaseConnection();}}在这个例子中首先创建一个HTTP客户端(HttpClient)的实例,然后选择提交的方法是GET 或者POST,最后在HttpClient实例上执行提交的方法,最后从所选择的提交方法中读取服务器反馈回来的结果。
这就是使用HttpClient的基本流程。
其实用一行代码也就可以搞定整个请求的过程,非常的简单!2.以GET或者POST方式向网页提交参数其实前面一个最简单的示例中我们已经介绍了如何使用GET或者POST方式来请求一个页面,本小节与之不同的是多了提交时设定页面所需的参数,我们知道如果是GET的请求方式,那么所有参数都直接放到页面的URL后面用问号与页面地址隔开,每个参数用&隔开,例如:?name=liudong&mobile=123456,但是当使用POST方法时就会稍微有一点点麻烦。
本小节的例子演示向如何查询手机号码所在的城市,代码如下:/** Created on 2003-12-7 by Liudong*/package http.demo;import java.io.IOException;import mons.httpclient.*;import mons.httpclient.methods.*;/*** 提交参数演示* 该程序连接到一个用于查询手机号码所属地的页面* 以便查询号码段1330227所在的省份以及城市* @author Liudongpublic class SimpleHttpClient {public static void main(String[] args) throws IOException{HttpClient client = new HttpClient();client.getHostConfiguration().setHost("", 80, "http ");HttpMethod method = getPostMethod();//使用POST方式提交数据client.executeMethod(method);//打印服务器返回的状态System.out.println(method.getStatusLine());//打印结果页面String response = new String(method.getResponseBodyAsString().getB ytes("8859_1"));//打印返回的信息System.out.println(response);method.releaseConnection();}/*** 使用GET方式提交数据* @return*/private static HttpMethod getGetMethod(){return new GetMethod("/simcard.php?simcard=1330227");}/*** 使用POST方式提交数据* @return*/private static HttpMethod getPostMethod(){PostMethod post = new PostMethod("/simcard.php");NameValuePair simcard = new NameValuePair("simcard","1330227");post.setRequestBody(new NameValuePair[] { simcard});return post;}}在上面的例子中页面/simcard.php需要一个参数是simcard,这个参数值为手机号码段,即手机号码的前七位,服务器会返回提交的手机号码对应的省份、城市以及其他详细信息。
GET的提交方法只需要在URL后加入参数信息,而POST则需要通过NameValuePair类来设置参数名称和它所对应的值3.处理页面重定向在JSP/Servlet编程中response.sendRedirect方法就是使用HTTP协议中的重定向机制。
它与JSP中的<jsp:forward …>的区别在于后者是在服务器中实现页面的跳转,也就是说应用容器加载了所要跳转的页面的内容并返回给客户端;而前者是返回一个状态码,这些状态码的可能值见下表,然后客户端读取需要跳转到的页面的URL并重新加载新的页面。
就是这样一个过程,所以我们编程的时候就要通过HttpMethod.getStatusCode()方法判断返回值是否为下表中的某个值来判断是否需要跳转。
如果已经确认需要进行页面跳转了,那么可以通过读取HTTP头中的location属性来获取新的地址。
状态码对应HttpServletResponse的常量详细描述301SC_MOVED_PERMANENTLY页面已经永久移到另外一个新地址302SC_MOVED_TEMPORARILY页面暂时移动到另外一个新的地址303SC_SEE_OTHER客户端请求的地址必须通过另外的URL来访问307SC_TEMPORARY_REDIRECT同SC_MOVED_TEMPORARILY下面的代码片段演示如何处理页面的重定向client.executeMethod(post);System.out.println(post.getStatusLine().toString());post.releaseConnection();//检查是否重定向int statuscode = post.getStatusCode();if ((statuscode == HttpStatus.SC_MOVED_TEMPORARILY) ||(statuscode == HttpStatus.SC_MOVED_PERMANENTLY) ||(statuscode == HttpStatus.SC_SEE_OTHER) ||(statuscode == HttpStatus.SC_TEMPORARY_REDIRECT)){//读取新的URL地址Header header = post.getResponseHeader("location");if (header != null) {String newuri = header.getValue();if ((newuri == null) || (newuri.equals("")))newuri = "/";GetMethod redirect = new GetMethod(newuri);client.executeMethod(redirect);System.out.println("Redirect:"+ redirect.getStatusLine().toString ());redirect.releaseConnection();} else {System.out.println("Invalid redirect");} 我们可以自行编写两个JSP页面,其中一个页面用response.sendRedirect方法重定向到另外一个页面用来测试上面的例子。