java 利用HttpClient PostMethod提交json数据操作

故事前要

今天,在做公司的一个项目,需要和第三方公司进行对接,需要将我们采集到的数据发送给第三方公司,按照对方提供的文档,传递好参数后,httpclient.execute(method)请求后,得到的状态码 ,一直是502,犹豫第一次使用HttpClient post json数据,一直怀疑是自己的代码问题,最后不知在哪个技术论坛看到 ,有人问url请求中有空格怎么办,突然发现对方提供的pdf文档中 竟然包含空格,而我天真的无视掉了 以为是文档的问题。

算了…… 不多BB了….

PostMethod请求注意两点:

1、如果使用的是公司的服务器,设置好代理和端口。

2、如果url中有空格,需要使用%20 进行转义。

贴一下我的代码 ,给不会还没用过不会PostMethod请求的萌新们…

HttpClient httpClient = new HttpClient();
 String host = (String) BaseConfig.get("host");
 String port = (String) BaseConfig.get("port");
 httpClient.getHostConfiguration().setProxy(host, Integer.valueOf(port));
 PostMethod postMethod = new PostMethod(applyurl);
 JSONObject jsonObject = new JSONObject();
 jsonObject.put("name",user.getName());
 jsonObject.put("phone",user.getPhone());
 jsonObject.put("provinceCode",user.getProvinceCode());
 jsonObject.put("cityCode",user.getCityCode());
 jsonObject.put("buyModelCode",user.getBuyModelCode());
 jsonObject.put("dealerCode",user.getDealerCode());
 jsonObject.put("url","http:xxx");
 String toJson = jsonObject.toString();
 RequestEntity se = new StringRequestEntity (toJson ,"application/json" ,"UTF-8");
 postMethod.setRequestEntity(se);
 postMethod.setRequestHeader("Content-Type","application/json");
 //默认的重试策略
 postMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
 postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 5000);//设置超时时间
 int httpStatus = hc.executeMethod(postMethod);
 String str=postMethod.getResponseBodyAsString();
 T.console("str-------:"+str);

代码很简单,就不过多解释了,最后感谢这个坑爹的文档,又让我学到了一招。

补充:利用HttpClient&PostMethod上传文件和请求参数

我就废话不多说了,大家还是直接看代码吧~

//HttpClient发起请求
public static String sendUrlFile(String url, String jsonstr) {
 String result = "";
 try {
 HttpClient httpclient = new HttpClient();
 PostMethod post = new PostMethod(url);
 FilePart filePart = new FilePart("file", new File("/root/桌面/文档/记录.txt"));
 filePart.setCharSet("utf-8");
 post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "utf-8");
 //Part数组装需要传第的参数和文件等
 Part[] parts = {new StringPart("username",jsonstr , "utf-8"),filePart};
 MultipartRequestEntity entity = new MultipartRequestEntity(parts, post.getParams());
 post.setRequestEntity(entity);
 int code = httpclient.executeMethod(post);
 //拿到响应结果
 result = new String(post.getResponseBody(), "UTF-8");
 //可释放连接
 post.releaseConnection();
 return result;
 } catch (HttpException h) {
 LOGGER.error("cause HttpException:" + h.getMessage());
 } catch (Exception i) {
 LOGGER.error("发送请求错误: url cause IOException:" + i.getMessage());
 }
 return "";
}
//接收请求服务器端 参数需要和发送端一致
@ResponseBody
@RequestMapping(value = “/login”)
public JsonResult revice(@RequestParam(“file”) MultipartFile file,@RequestParam(“username”)String username) throws IOException{
InputStream in = file.getInputStream();
OutputStream out = new FileOutputStream("/root/桌面/ok.txt");
byte[] bs = new byte[1024];
int len;
while(-1 != (len = (in.read(bs)))){
out.write(bs);
}
JsonResult json = new JsonResult();
System.out.println();
json.setResult(“ok”);
return json;
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • 解决使用httpclient传递json数据乱码的问题

    今天用httpclient传输json数据,服务端接受数据 中文乱码,下面分别贴上修改前与修改后的代码以及原因分析 (1)修改前: client端 public String sendHttpPost(String httpUrl, String data) { // 创建post请求 HttpPost httpPost = new HttpPost(httpUrl); StringEntity entity; try { entity = new StringEntity(data); ent

  • httpclient模拟post请求json封装表单数据的实现方法

    废话不说上代码: public static String httpPostWithJSON(String url) throws Exception { HttpPost httpPost = new HttpPost(url); CloseableHttpClient client = HttpClients.createDefault(); String respContent = null; // json方式 JSONObject jsonParam = new JSONObject(

  • httpclient 请求http数据,json转map的实例

    实例如下: package com.idc.dataAudit.dataResource; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache

  • java HttpClient传输json格式的参数实例讲解

    最近的一个接口项目,传的参数要求是json,需要特殊处理一下. 重点是这两句话: httpPost.setHeader("Content-Type", "application/json;charset=UTF-8"); se.setContentType(CONTENT_TYPE_TEXT_JSON); 这两句话的作用与jmeter的设置header信息类似 package com.base; import java.io.UnsupportedEncodingE

  • java 利用HttpClient PostMethod提交json数据操作

    故事前要 今天,在做公司的一个项目,需要和第三方公司进行对接,需要将我们采集到的数据发送给第三方公司,按照对方提供的文档,传递好参数后,httpclient.execute(method)请求后,得到的状态码 ,一直是502,犹豫第一次使用HttpClient post json数据,一直怀疑是自己的代码问题,最后不知在哪个技术论坛看到 ,有人问url请求中有空格怎么办,突然发现对方提供的pdf文档中 竟然包含空格,而我天真的无视掉了 以为是文档的问题. 算了-- 不多BB了-. PostMet

  • PHP基于curl模拟post提交json数据示例

    本文实例讲述了PHP基于curl模拟post提交json数据.分享给大家供大家参考,具体如下: 这里php模拟post提交json数据操作的关键是在头部设置Content-Type <?php header("Content-type:application/json;charset=utf-8"); $url="http://192.168.10.234:8080/uc/login/loginid"; $param=array( //注册字段 "n

  • java 实现通过 post 方式提交json参数操作

    由于所爬取的网站需要验证码,通过网页的开发人员工具[F12]及在线http post,get接口测试请求工具(http://coolaf.com/)发现访问时加上请求头header 信息时可以跳过验证码校验. 而且该网站只接受post请求,对提交的参数也只接受json格式,否则请求失败. 现将通过 post 方式提交json参数的方法记录如下: import java.io.UnsupportedEncodingException; import java.net.URI; import jav

  • Java利用httpclient通过get、post方式调用https接口的方法

    通过httpclient的get post方式调用http很常见.一般都是 HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(http://127.0.0.1/login); 但是如果要调用https这个方式就不行了.就要修改DefaultHttpClient <dependency> <groupId>org.apache.httpcomponents</groupId>

  • JAVA利用HttpClient进行HTTPS接口调用的方法

    本文介绍了JAVA利用HttpClient进行HTTPS接口调用的方法,分享给大家,具体如下: 1.为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过程. import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManage

  • Java利用反射实现文件的读取操作

    java反射 java从很早的版本开始就引入了反射机制,java如今的框架底层大部分也都是使用反射实现的. 这篇博客就去探索下java反射使用的方便之处. 要说java的反射机制,肯定离不开Class这个类,我们从jdk的源码可以看到这个类在jdk1.0的时候就存在了. 由于我这边需要用到文件读写的功能,同时又希望写的方法相对来说比较抽象,能在多出直接使用,于是我就想到了java的反射机制. 首先这边先把我的读取文件的方法展示出来 这个是用到的接口类 /** * 实现该接口中的方法,本来打算在F

  • JAVA利用HttpClient进行POST请求(HTTPS)实例

    最近,需要对客户的接口做一个包装,然后供自己公司别的系统调用,客户接口是用HTTP URL实现的,我想用HttpClient包进行请求,同时由于请求的URL是HTTPS的,为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过程. 1.写一个SSLClient类,继承至HttpClient package com.pcmall.service.sale.miaomore.impl; import java.security.cert.CertificateExcept

  • python 发送json数据操作实例分析

    本文实例讲述了python 发送json数据操作.分享给大家供大家参考,具体如下: # !/usr/bin/env python # -*- coding: utf-8 -*- import urllib2 import urllib import cookielib import json import httplib import re import requests from lxml import etree import StringIO import time s = request

  • 通过Ajax进行Post提交Json数据的方法

    js代码 $.ajax({ type : "POST", url : js_path + "/maintainAdd/add", data : JSON.stringify(madd_data.editMaintain), contentType : "application/json", dataType : "json", complete:function(msg) { layer.msg("报修成功"

  • Java基于JDBC连接数据库及显示数据操作示例

    本文实例讲述了Java基于JDBC连接数据库及显示数据操作.分享给大家供大家参考,具体如下: 1. 导入jdbc包 java要连接MySQL数据库需要用到JDBC工具(mysql-connector-java-5.1.39-bin.jar),这是一个jar包,不同的数据库对应不同的jar包,这里用的是MySQL数据库jar包,导入很简单,鼠标对项目右击 - Build Path - Configure Build Path - 右侧选Libraries - Add External JARs,选

随机推荐