java http服务端获取返回的数据_java 用http远程请求另外一个服务器,并接收返回回来的json数据...

本文展示了如何在Java中使用SimpleHttpClient类来发送GET和POST请求,获取远程服务器返回的JSON数据。通过设置HTTP头部信息和处理Cookie,实现了与服务器的交互。
摘要由CSDN通过智能技术生成

SimpleHttpClient httclient = new SimpleHttpClient();

Map headers = new HashMap();

=============================================================================================================================

String pwdTempSerCode = Base64Utils.encode(serviceSecret);

String pwdTempRandCode = Base64Utils.encode(phoneCode);

headers.put("Accept","text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01");

headers.put("Accept-Encoding", "gzip, deflate, br");

headers.put("Accept-Language", "zh-CN,zh;q=0.9");

headers.put("Connection", "Keep-Alive");

headers.put("Content-Type", "*");

headers.put("Cookie", buffer.toString());

headers.put("Host", "shop.10086.cn");

headers.put("Referer", "https://shop.10086.cn/i/?f=billdetailqry&welcome=" + System.currentTimeMillis());

headers.put("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36");

headers.put("x-requested-with", "XMLHttpRequest");

// 开始发包

String rest = httclient.get("https://shop.10086.cn/i/v1/fee/detailbilltempidentjsonp/" + userNumber

+ "?callback=jQuery031587062895804485_" + System.currentTimeMillis() + "&pwdTempSerCode="

+ pwdTempSerCode + "&pwdTempRandCode=" + pwdTempRandCode + "&captchaVal=" + catpy + "&_="

+ System.currentTimeMillis(), headers);

这里我们写了一个通用工具类,喜欢的可以自己研究

package com.fjdata.util;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import java.util.Map;

import org.apache.commons.httpclient.HttpClient;

import org.apache.commons.httpclient.methods.PostMethod;

import org.apache.commons.httpclient.methods.RequestEntity;

import org.apache.commons.httpclient.methods.StringRequestEntity;

import org.apache.http.HttpResponse;

import org.apache.http.NameValuePair;

import org.apache.http.ParseException;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.CookieStore;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.cookie.Cookie;

import org.apache.http.impl.client.BasicCookieStore;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.message.BasicNameValuePair;

import org.apache.http.util.EntityUtils;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

/**

*

* @author 朱洪郑

* 通用请求类

*

*

*/

public class SimpleHttpClient {

private static Logger logger = LoggerFactory.getLogger(SimpleHttpClient.class);

private static CloseableHttpClient httpClient;

private static CookieStore cookieStore;

static {

cookieStore = new BasicCookieStore();

// 将CookieStore设置到httpClient中

httpClient = HttpClients.custom().setDefaultCookieStore(cookieStore).build();

}

public static String getCookie(String name){

List cookies = cookieStore.getCookies();

System.out.println(cookies);

for(Cookie cookie : cookies){

if(cookie.getName().equalsIgnoreCase(name)){

return cookie.getValue();

}

}

return null;

}

/**

* GET 请求

* @param url

* @return

* @throws ClientProtocolException

* @throws IOException

*/

public static String get(String url) throws ClientProtocolException, IOException {

HttpGet httpGet = new HttpGet(url);

HttpResponse httpResponse = httpClient.execute(httpGet);

return EntityUtils.toString(httpResponse.getEntity());

}

public static String get(String url,Map headers) throws ClientProtocolException, IOException {

HttpGet httpGet = new HttpGet(url);

for(Map.Entry entry : headers.entrySet()){

httpGet.addHeader(entry.getKey(), entry.getValue());

}

HttpResponse httpResponse = httpClient.execute(httpGet);

return EntityUtils.toString(httpResponse.getEntity());

}

/**

* POST 请求

* @param url

* @param params

* @param headers

* @return

* @throws ParseException

* @throws IOException

*/

public static String post(String url, Map params, Map headers){

String str = "";

try {

HttpPost httpPost = new HttpPost(url);

UrlEncodedFormEntity postEntity = new UrlEncodedFormEntity(getParam(params), "UTF-8");

httpPost.setEntity(postEntity);

if(headers != null){

addHeaders(httpPost, headers);

}

HttpResponse httpResponse = httpClient.execute(httpPost);

str = EntityUtils.toString(httpResponse.getEntity(),"UtF-8");

} catch (Exception e) {

logger.error("推送失败,url:"+url,e);

}

return str;

}

public static String post(String url, Map headers){

String str = "";

try {

HttpPost httpPost = new HttpPost(url);

if(headers != null){

addHeaders(httpPost, headers);

}

HttpResponse httpResponse = httpClient.execute(httpPost);

str = EntityUtils.toString(httpResponse.getEntity(),"UtF-8");

} catch (Exception e) {

logger.error("推送失败,url:"+url,e);

}

return str;

}

/**

* POST 请求

* @param url

* @param

* @param

* @return

* @throws ParseException

* @throws IOException

*/

public static String post1(String url, String str, String cookie) throws ParseException, IOException{

HttpClient httpClient = new HttpClient();

PostMethod post = new PostMethod(url);

post.setRequestHeader("Cookie", cookie);

post.setRequestHeader("bfw-ctrl", "json");

post.setRequestHeader("Connection", "keep-alive");

post.setRequestHeader("Content-Type", "text/json");

post.setRequestHeader("Host", "ebsnew.boc.cn");

post.setRequestHeader("Origin", "https://ebsnew.boc.cn");

post.setRequestHeader("Referer", "https://ebsnew.boc.cn/boc15/welcome_ele.html?v=20171227064943706&locale=zh&login=card&segment=1");

post.setRequestHeader("X-Requested-With", "XMLHttpRequest");

RequestEntity entity = new StringRequestEntity(str, "text/html", "utf-8");

// List list=new ArrayList<>();

//list.add(new org.apache.commons.httpclient.NameValuePair("",""),new org.apache.commons.httpclient.NameValuePair("",""));

post.addParameter("_locale", "zh_CN" );

post.setRequestEntity(entity);

httpClient.executeMethod(post);

String result = post.getResponseBodyAsString();

return result;

}

/**

* 参数

* @param parameterMap

* @return

*/

private static List getParam(Map parameterMap) {

List param = new ArrayList();

for(Map.Entry entry : parameterMap.entrySet()){

param.add(new BasicNameValuePair(entry.getKey(), String.valueOf(entry.getValue())));

}

return param;

}

/**

* 添加头

* @param httpRequest

* @param headerMap

*/

private static void addHeaders(HttpEntityEnclosingRequestBase httpRequest, Map headerMap){

for(Map.Entry entry : headerMap.entrySet()){

httpRequest.addHeader(entry.getKey(), entry.getValue());

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值