`
conkeyn
  • 浏览: 1512021 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

post json

    博客分类:
  • Java
 
阅读更多

方法一:

public static String doPostJson(String interfaceUrl, Object jsonObject) throws Exception {
		String encoding = "UTF-8";
		String contentType = "application/json";
		String requestMethod = "POST";
		Gson gson = new Gson();
		String stringJson = gson.toJson(jsonObject);
		StringBuffer result = new StringBuffer();
		URLConnection connection = null;
		HttpURLConnection httpConn = null;
		try {
			URL url = new URL(interfaceUrl);
			connection = url.openConnection();
			httpConn = (HttpURLConnection) connection;
			if (stringJson != null) {
				byte[] b = stringJson.getBytes(encoding);
				// 设置 http发送相关属性
				httpConn.setRequestProperty("Content-Length", String.valueOf(b.length));
			}
			httpConn.setRequestProperty("Accept-Charset", encoding);
			httpConn.setRequestProperty("Content-type", contentType);
			httpConn.setRequestProperty("contentType", encoding);
			httpConn.setRequestMethod(requestMethod.toUpperCase());
			httpConn.setDoOutput(true);
			httpConn.setDoInput(true);

			if (stringJson != null && !stringJson.equals("")) {
				// 写消息
				OutputStream out = httpConn.getOutputStream();
				try {
					out.write(stringJson.getBytes(encoding));
				} finally {
					out.flush();
					out.close();
				}
			}
			int returnCode = httpConn.getResponseCode();
			if (returnCode != 200) {
				throw new Exception("连接异常,状态码[" + returnCode + "]");
			}
			// 读取结果
			InputStreamReader isr = new InputStreamReader(httpConn.getInputStream(), encoding);
			BufferedReader in = new BufferedReader(isr);
			try {
				String inputLine = in.readLine();
				while (null != inputLine) {
					result.append(inputLine);
					inputLine = in.readLine();
				}
			} finally {
				if (in != null) {
					in.close();
				}
				if (isr != null) {
					isr.close();
				}
			}
		} catch (Exception e) {
			throw e;//请求失败后把异常往外抛
		} finally {
			if (httpConn != null) {
				httpConn.disconnect();
			}
		}
		return result.toString();
	}

 方法二:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import lsyj.api.fenxiao.utils.BaseExceptionDealWith;

import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpConnectionManager;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
import org.apache.commons.httpclient.params.HttpMethodParams;

public class HttpSimpleImpl {
    /**
     * 默认的字符串格式
     */
    private static String DEF_CHARSET="UTF-8";
    /**
     * 默认文件类型
     */
    private static String DEF_FILE_TYPE="text/json";
    /**
     * 设置请求超时时间 单位毫秒
     */
    private int connectionTimeout=30000;
    /**
     * 设置等待数据超时时间 单位毫秒
     */
    private int soTiemout=600000;
    public HttpSimpleImpl(){

    }
    public HttpSimpleImpl(int connectionTimeout,int soTiemout){
        if(connectionTimeout>0)
            this.connectionTimeout=connectionTimeout;
        if(soTiemout>=0){
            this.soTiemout=soTiemout;
        }
    }
    /**
     * get请求
     * @param showUrl
     * @param map
     * @return
     * @throws Exception
     */
    public String simpleGet(String showUrl) throws Exception{


        GetMethod getMethod = new GetMethod(showUrl);
        HttpMethodParams methodParams = getMethod.getParams();
        methodParams.setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, DEF_CHARSET);
        methodParams.setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());

        HttpClient httpClient = new HttpClient();
        HttpConnectionManager connectionManager = httpClient.getHttpConnectionManager();
        HttpConnectionManagerParams connectionManagerParams = connectionManager.getParams();
        connectionManagerParams.setConnectionTimeout(30000);// 
        connectionManagerParams.setSoTimeout(30000);// 

        try {
            int statusCode = httpClient.executeMethod(getMethod);
            if (statusCode != HttpStatus.SC_OK) {
                throw new Exception(" - 异常:http请求返回码错误"+statusCode);
            }
            InputStream in= getMethod.getResponseBodyAsStream();
            BufferedReader br=new BufferedReader(new InputStreamReader(in,DEF_CHARSET));
            StringBuffer result=new StringBuffer();
            String temp="";
            while((temp=br.readLine())!=null){
                result.append(temp);
            }
            return result.toString();
        } catch (Exception e) {

            throw new Exception(" - 异常:Get请求异常 - 原因描述:"+BaseExceptionDealWith.getBaseExceptionString(e));
        }finally{
            getMethod.releaseConnection();
        }

    }
    /**
     * 简单那的post请求
     * @param url 请求地址
     * @param postData json格式参数
     * @return json字符串
     * @throws Exception
     */
    public String simplePost(String url,String postData) throws Exception{
        if(SimpleUtil.isNullOrTrim(url)||SimpleUtil.isNullOrTrim(postData)){
            throw new Exception("url为空,请求内容为空");
        }
        HttpClient httpClient=new HttpClient();
        HttpConnectionManager manager=httpClient.getHttpConnectionManager();
        HttpConnectionManagerParams managerPrams=manager.getParams();
        managerPrams.setConnectionTimeout(connectionTimeout);
        managerPrams.setSoTimeout(soTiemout);
        PostMethod postMethod=new PostMethod(url);
        postMethod.addRequestHeader("Content-Type", "application/json");
        try {
            RequestEntity requestEntity=new StringRequestEntity(postData, DEF_FILE_TYPE, DEF_CHARSET);

            postMethod.setRequestEntity(requestEntity);    
            int statusCode=httpClient.executeMethod(postMethod);
            if(statusCode!=HttpStatus.SC_OK){
                throw new Exception("请求返回状态码错误!状态码:"+statusCode);
            }
            InputStream in=postMethod.getResponseBodyAsStream();
            BufferedReader br=new BufferedReader(new InputStreamReader(in, DEF_CHARSET));
            StringBuffer sbResult=new StringBuffer();
            String temp="";
            while((temp=br.readLine())!=null){
                sbResult.append(temp);
            }
            if(sbResult==null||sbResult.length()<=0)
                throw new Exception("返回结果为空!");
            return sbResult.toString();
        } catch (UnsupportedEncodingException e) {

            throw e;
        } catch (HttpException e) {

            throw e;
        } catch (IOException e) {

            throw e;
        }finally{
            postMethod.releaseConnection();
        }    
    }    
}

 在

分享到:
评论

相关推荐

    postjson_windows接口测试工具

    【标题】"Postjson_windows接口测试工具"是一个专为Windows平台设计的应用程序,它使得开发者和测试人员能够方便地对RESTful API接口进行测试。在软件开发过程中,接口测试是确保不同系统组件之间数据交换正确性的...

    httpclient post json 数据

    "httpclient post json数据"这个主题就是关于如何使用C#的HttpClient类来向Web API发送POST请求,并且以JSON格式传输数据。下面将详细解释这一过程。 首先,理解JSON(JavaScript Object Notation)是一种轻量级的...

    Qt 写的http 请求使用POST Json

    POST方法常用于提交表单数据或上传文件,这里的用途是上传JSON数据。 接着,我们需要处理JSON数据。Qt提供QJsonDocument和QJsonObject类来解析和创建JSON对象。JSON(JavaScript Object Notation)是一种轻量级的...

    Okhttp框架post json封装

    在上面的代码中,我们首先创建了一个`OkHttpClient`实例,然后定义了一个`postJson`方法,该方法接收URL、JSON字符串和回调函数作为参数。我们使用`RequestBody.create`方法创建一个JSON格式的请求体,接着构建一个`...

    安卓http post json

    安卓http post json 方法

    PostJson Windows

    **PostJson Windows 知识点详解** PostJson Windows 是一个专为Windows操作系统设计的本地工具,它提供了便捷的API接口测试、压力测试、端口扫描等功能。通过解压缩提供的文件"Post Json Windows.exe",用户可以在...

    NetHelper_C#帮助类HtmlHelper_JSON_PostJson_

    C#写的Html帮助类 有线程下载 图片下线 GET POST JSON等

    Retrofit2 登录Demo @Post json数据到服务器

    Retrofit2 登录Demo @Post json数据到服务器 addConverterFactory(GsonConverterFactory.create()) 把服务端返回的json数据解析成实体的ApiResult&lt;ApiToken&gt;

    asp.net Core Post Json方式给控制器Action传参并拦截丢失参数等错误信息

    原生asp.net不支持通过json提交 方式给控制器的Action传参数,本程序通过给自定义输入字符串格式方法。在action的传参上加入FromJsonKey属性即可在传入的json中传入参数,如果传入的json中不存在相应键即报错 ...

    C# http post jason简单示例

    在这个示例中,我们将探讨如何在C#中使用HTTP POST方法发送JSON数据,以及如何利用开源库Newtonsoft.Json来处理JSON序列化和反序列化。 首先,HTTP POST请求是HTTP协议中的一个方法,用于向服务器提交数据。与GET...

    postjson压力测试.zip

    post\get接口压力测试

    HTTP Post提交Json与接收返回结果 Winform程序

    它接受API的URL和一个动态对象`data`,将对象序列化为JSON,然后创建一个`StringContent`实例,设置合适的MIME类型("application/json"),最后使用`HttpClient.PostAsync`发送POST请求。如果服务器返回成功状态码...

    Node.js-tiny-json-http极简的HTTP客户端用于GET和POSTJSON负载

    **Node.js-tiny-json-http极简的HTTP客户端用于GET和POST JSON负载** 在现代Web开发中,Node.js凭借其非阻塞I/O模型和事件驱动的特性,成为了构建服务器端和网络应用的理想选择。其中,HTTP请求是进行数据交互的...

    post json 请求

    在IT行业中,网络请求是应用程序与服务器交互的基础,而POST JSON请求是其中一种常见的数据传输方式。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和...

    libcurl 以JSON模式post

    《使用libcurl进行JSON模式POST详解》 在现代的网络编程中,数据交换往往离不开JSON(JavaScript Object Notation)格式,其简洁明了的特性使得它成为API接口间通信的首选。而在C++环境中,libcurl库则为HTTP请求...

    HttpPost_json.java java http-post json格式客户端请求代码

    java http-post json格式客户端请求代码

    delphi_demo HttpPost+JSON

    标题“delphi_demo HttpPost+JSON”涉及到的是一个Delphi编程示例,它演示了如何使用HTTP POST方法发送JSON格式的数据。Delphi是Embarcadero Technologies开发的一种面向对象的编程语言,常用于Windows应用程序开发...

    php post json参数的传递和接收处理方法

    本文将详细介绍如何通过POST方法传递和接收JSON参数。 首先,我们要理解PHP如何处理POST请求。在PHP中,通常使用`$_POST`全局变量来获取表单数据。然而,当数据以JSON格式发送时,这些数据不会自动填充到`$_POST`...

    C++实现的服务器post访问并实现JSON数据流解析

    在本文中,我们将深入探讨如何使用C++实现一个服务器POST访问功能,并且解析接收到的JSON数据流。C++作为一种强大的编程语言,广泛应用于系统级编程、游戏开发以及服务器端应用。结合HTTP协议和JSON数据格式,我们...

Global site tag (gtag.js) - Google Analytics