一、java调用post接口

1、使用URLConnection或者HttpURLConnection

java自带的,无需下载其他jar包

URLConnection方式调用,如果接口响应码被服务端修改则无法接收到返回报文,只能当响应码正确时才能接收到返回

public static String sendPost(String url, String param) {
        OutputStreamWriter out = null;
        BufferedReader in = null;
        StringBuilder result = new StringBuilder("");
        try {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestProperty("Content-Type","application/json;charset=UTF-8");
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
            // 发送请求参数
            out.write(param);
            // flush输出流的缓冲
            out.flush();
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
            String line;
            while ((line = in.readLine()) != null) {
                result.append(line);
            }
        } catch (Exception e) {
            System.out.println("发送 POST 请求出现异常!" e);
            e.printStackTrace();
        }
        //使用finally块来关闭输出流、输入流
        finally{
        	if(out!=null){ try { out.close(); }catch(Exception ex){} }
        	if(in!=null){ try { in.close(); }catch(Exception ex){} }
        }
        return result.toString();
    }

HttpURLConnection方式调用

//ms超时毫秒,url地址,json入参
public static String httpJson(int ms,String url,String json) throws Exception{
		String err = "00", line = null;
		StringBuilder sb = new StringBuilder();
		HttpURLConnection conn = null;
		BufferedWriter out = null;
		BufferedReader in = null;
		try{
			conn = (HttpURLConnection) (new URL(url.replaceAll("/","/"))).openConnection();
			conn.setRequestMethod("POST");
			conn.setDoOutput(true);
			conn.setDoInput(true);
			conn.setUseCaches(false);
			conn.setConnectTimeout(ms);
			conn.setReadTimeout(ms);
			conn.setRequestProperty("Content-Type","application/json;charset=utf-8");
			conn.connect();
			out = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream(),"utf-8"));
			out.write(new String(json.getBytes(), "utf-8"));
			out.flush();//发送参数
			int code = conn.getResponseCode();
			if (conn.getResponseCode()==200){
				in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
				while ((line=in.readLine())!=null)
					sb.append(line);
			}//接收返回值
			
		}catch(Exception ex){
			err=ex.getMessage();
		}
		try{ if (out!=null) out.close(); }catch(Exception ex){}; 
		try{ if (in!=null) in.close(); }catch(Exception ex){};
		try{ if (conn!=null) conn.disconnect();}catch(Exception ex){}
		if (!err.equals("00")) throw new Exception(err);
		return sb.toString();
	}

2、使用CloseableHttpClient

使用的jar包

<dependency>
    <groupId>com.alibaba.csb.sdk</groupId>
    <artifactId>http-client</artifactId>
    <version>1.1.5.1</version>
</dependency>
public static String httpPostJson(String url,String json) throws Exception{
		String data=""; 
		CloseableHttpClient httpClient = null;
		CloseableHttpResponse response = null;
		try {
			httpClient = HttpClients.createDefault();
			HttpPost httppost = new HttpPost(url);
			httppost.setHeader("Content-Type", "application/json;charset=UTF-8");
			StringEntity se = new StringEntity(json,Charset.forName("UTF-8"));
	        se.setContentType("text/json");
	        se.setContentEncoding("UTF-8");
	        httppost.setEntity(se);
	        response = httpClient.execute(httppost);
	        int code = response.getStatusLine().getStatusCode();
	        System.out.println("接口响应码:" code);
	        data = EntityUtils.toString(response.getEntity(), "utf-8");
	        EntityUtils.consume(response.getEntity());
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(response!=null){ try{response.close();}catch (IOException e){} }
			if(httpClient!=null){ try{httpClient.close();}catch(IOException e){} }
		}
		return data;
	}

3、使用HttpCaller

使用的jar包同第2个中的jar包。

详情可以查看阿里云总线CSB

https://help.aliyun.com/document_detail/148571.html

public static String sendPost(){
		String result = "";
		HttpParameters.Builder builder = HttpParameters.newBuilder();
		builder.requestURL("URL") // 设置请求的URL
        		.api("api") // 设置服务名
        		.version("version") // 设置版本号
        		.method("post") // 设置调用方式, get/post
        		.accessKey("ak").secretKey("sk"); // 设置accessKey 和 设置secretKey
		// 设置请求参数(json格式)
        Map<String,String> param = new HashMap<String,String>();
        param.put("key1","value1");
        param.put("key2","value2");
        //加密,没有加密则不需要encryptParam,直接用param
        Map<String,String> encryptParam = new HashMap<String,String>();
        encryptParam.put("key3", getData(JSON.toJSONString(param)));
        ContentBody cb = new ContentBody(JSON.toJSONString(encryptParam));
        builder.contentBody(cb);
        
        try {
        	result = HttpCaller.invoke(builder.build());
		} catch (Exception e) {
			e.printStackTrace();
		}
		
        return result;
	}
	
	//自己的加密方式
	public static String getData(String data1){
		return "加密后的密文";
	}

二、java调用get接口

使用java自带的URLConnection

//将map型转为请求参数型
public static String getUrlData(Map<Object, Object> data) throws Exception{
	StringBuffer sb = new StringBuffer();
	try {
		Set<Map.Entry<Object, Object>> entries = data.entrySet();
		Iterator<Map.Entry<Object, Object>> iterators = entries.iterator();
		while(iterators.hasNext()){
			Map.Entry<Object, Object> next = iterators.next();
			sb.append(next.getKey().toString().trim()).append("=").append(URLEncoder.encode(next.getValue()   "", "UTF-8").trim()).append("&");
		}
		sb.deleteCharAt(sb.length() - 1);
	} catch (Exception e) {
		sb.append(e.toString());
	}
	return sb.toString();
}

//strUrl截止到?,例:http://127.0.0.1:8080/api/method?
public static String httpGet(String strUrl){
	Map<Object, Object> params = new HashMap<Object, Object>();
	params.put("key1", "value1");
	params.put("key2", "value2");
	String url=strUrl   getUrlData(params);
	
  	StringBuilder result = new StringBuilder();
    BufferedReader in = null;
    try {
        URL realUrl = new URL(url);
        // 打开和URL之间的连接
        URLConnection connection = realUrl.openConnection();
        // 设置通用的请求属性
        connection.setRequestProperty("accept", "*/*");
        connection.setRequestProperty("connection", "Keep-Alive");
        connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
        // 建立实际的连接
        connection.connect();
        // 获取所有响应头字段
        // 定义 BufferedReader输入流来读取URL的响应
        in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));
        String line;
        while ((line = in.readLine()) != null) {
            result.append(line);
        }
    } catch (Exception e) {
        System.out.println("发送GET请求出现异常!"   e);
        e.printStackTrace();
    }
    finally {
    	if (in != null){ try { in.close(); }catch(Exception e2){} }
    }
    return result.toString();
}

总结

到此这篇关于java发起http请求调用post与get接口的文章就介绍到这了,更多相关java调用post与get接口内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

java发起http请求调用post与get接口的方法实例的更多相关文章

  1. ios – 将视频分享到Facebook

    我正在编写一个简单的测试应用程序,用于将视频从iOS上传到Facebook.由于FacebookSDK的所有文档都在Objective-C中,因此我发现很难在线找到有关如何使用Swift执行此操作的示例/教程.到目前为止我有这个在我的UI上放置一个共享按钮,但它看起来已禁用,从我读到的这是因为没有内容设置,但我看不出这是怎么可能的.我的getVideoURL()函数返回一个NSURL,它肯定包含视

  2. ios – 错误域= NSURLErrorDomain代码= -1003“找不到具有指定主机名的服务器

    当我尝试在设备上运行应用程序时出现此错误.当我在模拟器上运行它并且post请求正常工作时,我没有收到此错误.这是我的代码片段:任何帮助表示赞赏.谢谢解决方法此错误通常会提示DNS相关问题.检查设备上的DNS设置并确认您可以使用Safari或其他浏览器浏览互联网.如果有一个url,你可以在同一台服务器上获取,尝试直接在设备上的Safari中访问它.

  3. ios – Xcode Bot:如何在post触发器脚本上获得.ipa路径?

    我正在使用机器人来存档iOS应用程序,我需要获取.ipa产品路径才能将其发布到我们的分发系统中.机器人设置:并使用脚本打印所有env变量,其中不包含ipa文件的路径.此外,一些变量指向不存在的目录,即:XCS_OUTPUT_DIR这里的env变量输出:除此之外,我还能够确认.ipa文件是在另一个文件夹中创建的(/IntegrationAssets//

  4. ios – 使用CocoaPods post install hook将自定义路径添加到HEADER_SEARCH_PATHS

    解决方法在Podfile中定义一个方法:然后在post_install中调用该方法:

  5. 通过AFNetworking 2.0上传iOS图像

    我一直在寻找新的AFNetworking2.0上传图像的例子.但是我正在撞墙,无法弄清楚代码有什么问题.所以这是我使用的代码TIA解决方法我最终使用了多部分请求

  6. ios – 在Objective-C中发送分块的HTTP 1.1请求

    我有以下问题:我正在创建一个非常大的SOAP请求(数据是一个编码为Base64字符串的视频),因此我不能将其作为原始SOAP请求发送,而是需要在HTTP1.1块中发送它.我似乎无法弄明白该怎么做.我在这里使用了代码:WhatarealternativestoNSURLConnectionforchunkedtransferencoding但它似乎没有做我认为应该做的事情–我可以看到请求作为单个请求

  7. iOS7 Safari中的全屏模式

    我正在使用SenchaTouch开发移动网站.在iOS7Safari中,我无法创建顶级地址栏和下面的工具栏消失了.Sencha过去常常处理iOS6,但iOS7最近的一些变化导致了这个问题.http://java.dzone.com/articles/safari-ios-7-and-html5我阅读了上面的链接&对于HTML5游戏而言,这似乎也是一个问题.一些其他应用程序.适用于iOS6的旧win

  8. ios – 如何使用新的Apple Swift语言发布JSON

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  9. ios – POST请求使用application / x-www-form-urlencoded

    后端开发人员在POST请求中给出了这些说明:>路线:{url}/{app_name/{controller}/{action}控制器和动作应该是小帽子.>API测试链接:http:****************>请求应该使用POST方法.>参数应通过请求内容体(FormUrlEncodedContent)传递.>参数应该是json格式.>参数是关键的.在协议中没有经验5,我搜索并结束了我的代码.

  10. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部