java 接口调用
生产中遇到过这种问题,记录下java的接口调用问题。
一种是json方式;
 public static String sendPost(String url, JSONObject obj)throws IOException{
                   OutputStreamWriter out = null;
                   BufferedReader reader = null;
                   String response="";
/*                   String paramStr = "";
                if (null != param) { //遍历参数Map添加到集合中
                    Set<String> keySet = param.keySet();
                    for (String key : keySet) {
                        paramStr = paramStr + key + ":" + param.get(key) + "&";
                    }
                }
                int lastAndIndex = paramStr.lastIndexOf("&");
                if (lastAndIndex != -1) {
                    paramStr = paramStr.substring(0, lastAndIndex);
                }
                System.out.println("地址===" + url);
                System.out.println("入参===" + paramStr);*/
                   try {
                       URL httpUrl = null; //HTTP URL类 用这个类来创建连接
                       //创建URL
                       httpUrl = new URL(url);
                       //建立连接
                       HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();
                       conn.setRequestProperty("accept", "*/*");// 设置通用的请求属性
                       conn.setRequestProperty("Charset", "UTF-8");
                       conn.setRequestMethod("POST");
                       conn.setRequestProperty("Content-Type", "application/json");
                       conn.setRequestProperty("connection", "keep-alive");
                       conn.setUseCaches(false);//设置不要缓存
                       conn.setInstanceFollowRedirects(true);
                       conn.setDoOutput(true);
                       conn.setDoInput(true);
                       conn.connect();
                       //POST请求
                       out = new OutputStreamWriter(
                               conn.getOutputStream());
                       out.write(obj.toJSONString());
                       out.flush();
                       //读取响应
                       reader = new BufferedReader(new InputStreamReader(
                               conn.getInputStream()));
                       String lines;
                       while ((lines = reader.readLine()) != null) {
                           lines = new String(lines.getBytes(), "utf-8");
                           response+=lines;
                       }
                       reader.close();
                       // 断开连接
                       conn.disconnect();
                   } catch (Exception e) {
                   System.out.println("发送 POST 请求出现异常!"+e);
                   e.printStackTrace();
                   }
                   //使用finally块来关闭输出流、输入流
                   finally{
                   try{
                       if(out!=null){
                           out.close();
                       }
                       if(reader!=null){
                           reader.close();
                       }
                   }
                   catch(IOException ex){
                       ex.printStackTrace();
                   }
               }
                   return response;
               }
再来一个普通的str 调用接口;
/**
* 向指定 URL 发送POST方法的请求
* @param url 发送请求的 URL
* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return 所代表远程资源的响应结果
*/
public static String sendPostWebReq(String url, Map<String, Object> param,int i) throws Exception {
String paramStr = "";
if (null != param) { //遍历参数Map添加到集合中
Set<String> keySet = param.keySet();
for (String key : keySet) {
paramStr = paramStr + key + "=" + param.get(key) + "&";
}
}
int lastAndIndex = paramStr.lastIndexOf("&");
if (lastAndIndex != -1) {
paramStr = paramStr.substring(0, lastAndIndex);
} System.out.println("地址===" + url);
System.out.println("入参===" + paramStr); PrintWriter out = null;
BufferedReader in = null;
String result = "";
try {
URL realUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();// 打开和URL之间的连接
conn.setRequestProperty("accept", "*/*");// 设置通用的请求属性
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("Charset", "UTF-8");
conn.setDoOutput(true);// 发送POST请求必须设置如下两行
conn.setDoInput(true);// 获取URLConnection对象对应的输出流
out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "UTF-8"));// 发送请求参数
out.print(paramStr);// flush输出流的缓冲
out.flush();
in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));// 定义BufferedReader输入流来读取URL的响应
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!" + e);
throw e;
} finally { // 使用finally块来关闭输出流、输入流
try {
if (in != null) in.close();
} catch (IOException ex) { }
if (out != null) out.close();
}
return result;
}
java 接口调用的更多相关文章
- OpenCV4Android开发之旅(一)----OpenCV2.4简介及 app通过Java接口调用OpenCV的示例
		转自: http://blog.csdn.net/yanzi1225627/article/details/16917961 开发环境:windows+ADT Bundle+CDT+OpenCV-2 ... 
- 十分钟搭建redis单机版 & java接口调用
		本次单机版redis服务器搭建采用的包为redis-3.0.0.tar.gz,主要是记录下安装的心得,不喜勿喷! 一.搭建redis服务器单机版 1.上传redis-3.0.0.tar.gz到服务器上 ... 
- java接口调用——webservice就是一个RPC而已
		很多新手一听到接口就蒙逼,不知道接口是什么!其实接口就是RPC,通过远程访问别的程序提供的方法,然后获得该方法执行的接口,而不需要在本地执行该方法.就是本地方法调用的升级版而已,我明天会上一篇如何通过 ... 
- 百度鹰眼Java接口调用增删改查实例
		因感觉百度鹰眼的使用场景比较符合实际业务,于是对百度鹰眼做了简单功能调试.刚开始使用springframework封装的RestTemplate,但是测试提示ak参数不存在.后又试了几种方法,均提示a ... 
- Java接口调用工具类
		package com.qiyuan.util; import java.io.BufferedReader; import java.io.IOException; import java.io.I ... 
- 基于JAVA的全国天气预报接口调用示例
		step1:选择本文所示例的接口"全国天气预报接口" url:https://www.juhe.cn/docs/api/id/39/aid/87step2:每个接口都需要传入一个参 ... 
- bugzilla4的xmlrpc接口api调用实现分享:   xmlrpc + https + cookies + httpclient +bugzilla + java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能
		xmlrpc . https . cookies . httpclient.bugzilla . java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能,网上针对bugzilla的实现很 ... 
- java后台调用HttpURLConnection类模拟浏览器请求(一般用于接口调用)
		项目开发中难免遇到外部接口的调用,小生今天初次接触该类,跟着API方法走了一遍,如有不对的地方,还请哆哆指正,拜谢! 1 package com.cplatform.movie.back.test; ... 
- C#调用java接口报“Fault occurred while processing”异常问题
		服务在通常项目中总是要用到的C#的webservice.wcf,还有第三方的,比如java服务.一般来说调用都不会有什么问题,因为服务的标准都是一样的.要注意的就是:1.参数个数匹配:2.参数类型和返 ... 
随机推荐
- JavaScript函数的多种定义方法
			缘起 javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法也是对 javascript语言特性更进一步的深入理解, ... 
- iOS与H5交互遇到的坑
			之前的博客写过使用<JavaScriptCore/JavaScriptCore.h>库来实现与H5的交互,但是在项目中还是遇到了一些不得不踩的坑.在这里将我遇到的问题以及参考网上几位大神的 ... 
- python selenium +autoit实现文件上传 --实践
			upload.html <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&q ... 
- selenium2.0关于python的常用函数
			转: 新建实例driver = webdriver.Chrome() 1.获取当前页面的Url函数 方法:current_url 实例: driver.current_url 2.获取元素坐标 方法: ... 
- JMeter学习笔记--JMeter常用测试元件
			JMeter测试计划有一个被称为“函数测试模式”的选项,如果被选择,它会使Jmeter记录来自服务器返回的每个取样的数据.如果你在测试监听器中选择一个文件,这个数据将被写入文件.如果你尝试一个较小的测 ... 
- python中的三引号
			在python中,三引号支持字符串跨多行.包含换行符号.制表符号.以及其它特殊字符 >>> hi = ''' ... this ... is a ... test ... ''' & ... 
- unity, Find References In Scene
			材质,脚本,shader等都可以通过Find References In Scene查看引用情况,如图. 当对一个文件点击Find References In Scene后,搜索命令会显示到Scene ... 
- 在 ASP.NET Web API 中,使用 命名空间(namespace) 来作为路由的参数
			这个问题来源于我想在 Web API 中使用相同的控制器名称(Controller)在不同的命名空间下,但是 Web API 的默认 路由(Route) 机制是会忽略命名空间的不同的,如果这样做,会看 ... 
- android发送短信样例
			Android应用开发中我们经常须要发送手机短信.这对于android平台来说,是最简单只是的功能了,无需太多代码,也无需自己定义代码,仅仅须要调用android提供的消息管理类SmsManager就 ... 
- linux快速进入全屏命令行模式
			按CTRL+ALT+F1~6就可以了.F7是桌面环境. 
