问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java如何使用http方式调用第三方接口?最好有代码~谢谢

发布网友 发布时间:2022-04-28 18:52

我来回答

2个回答

热心网友 时间:2022-06-22 21:49

星号是IP地址和端口号
public class HttpUtil {
private final static Log log = LogFactory.getLog(HttpUtil.class);
public static String doHttpOutput(String outputStr,String method) throws Exception {
Map map = new HashMap();
String URL = "http://****/interface/http.php" ;
String result = "";
InputStream is = null;
int len = 0;
int tmp = 0;

OutputStream output = null;
BufferedOutputStream objOutput = null;
String charSet = "gbk";
System.out.println("URL of fpcy request");
System.out.println("=============================");
System.out.println(URL);
System.out.println("=============================");
HttpURLConnection con = getConnection(URL);
try {
output = con.getOutputStream();
objOutput = new BufferedOutputStream(output);
objOutput.write(outputStr.getBytes(charSet));
objOutput.flush();
output.close();
objOutput.close();
int responseCode = con.getResponseCode();
if (responseCode == 200) {
is = con.getInputStream();
int dataLen = is.available();
int retry = 5;
while (dataLen == 0 && retry > 0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
dataLen = is.available();
retry--;
log.info("未获取到任何数据,尝试重试,当前剩余次数" + retry);
}
log.info("获取到报文单位数据长度:" + dataLen);
byte[] bytes = new byte[dataLen];
while ((tmp = is.read()) != -1) {
bytes[len++] = (byte) tmp;
if (len == dataLen) {
dataLen = bytes.length + dataLen;
byte[] newbytes = new byte[dataLen];
for (int i = 0; i < bytes.length; i++) {
newbytes[i] = bytes[i];
}
bytes = newbytes;
}
}
result = new String(bytes, 0, len, charSet);
} else {
String responseMsg = "调用接口失败,返回错误信息:" + con.getResponseMessage() + "(" + responseCode + ")";
System.out.println(responseMsg);
throw new Exception(responseMsg);
}
} catch (IOException e2) {
log.error(e2.getMessage(), e2);
throw new Exception("接口连接超时!,请检查网络");
}
con.disconnect();
System.out.println("=============================");
System.out.println("Contents of fpcy response");
System.out.println("=============================");
System.out.println(result);
Thread.sleep(1000);
return result;
}
private static HttpURLConnection getConnection(String URL) throws Exception {
Map map = new HashMap();
int rTimeout = 15000;
int cTimeout = 15000;
String method = "";
method = "POST";
boolean useCache = false;
useCache = false;
HttpURLConnection con = null;
try {
con = (HttpURLConnection) new URL(URL).openConnection();
} catch (IOException e) {
log.error(e.getMessage(), e);
throw new Exception("URL不合法!");
}
try {
con.setRequestMethod(method);
} catch (ProtocolException e) {
log.error(e.getMessage(), e);
throw new Exception("通信协议不合法!");
}
con.setConnectTimeout(cTimeout);
con.setReadTimeout(rTimeout);
con.setUseCaches(useCache);
con.setDoInput(true);
con.setDoOutput(true);
log.info("当前连接信息: URL:" + URL + "," + "Method:" + method
+ ",ReadTimeout:" + rTimeout + ",ConnectTimeOut:" + cTimeout
+ ",UseCaches:" + useCache);
return con;
}

public static void main(String[] args) throws Exception {
String xml="<?xml version=\"1.0\" encoding=\"GBK\" ?><document><txcode>101</txcode><netnumber>100001</netnumber>.........</document>";

response=HttpUtil.doHttpOutput(xml, "post");
JSONObject json= JSONObject.parseObject(response);
String retcode=json.getString("retcode");
调用这个类就能获得返回的参数。。over.

}

}
}

热心网友 时间:2022-06-22 21:50

这个代码我就没法给你发了,因为是之前项目的代码,反正技术就是apache的httpclinet,网上很多例子。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
珍珠粉可以天天敷脸吗 教你自制珍珠粉面膜 中超什么时候成立 交通刷卡金是什么 哪吒V上市进入倒计时,车身超4米,轴距为2420mm,续航里程401km. 关于倩女幽魂爆鬼问题 倩女幽魂什么是大宝队 关于倩女幽魂爆鬼分红的问题 泰国绿咖喱中的咖喱酱是如何制作的,它的独特口味来源于哪些香料?_百度... 好看电视剧,推荐个,现代都市剧,古装剧,战争爱情剧都可以,要经典,确确 ... 去北京上大学转户口好不好 在电脑上怎么打五线谱? java如何调用外部程序 java spring mvc通过httpclient调用别人的接口服务 java 程序向其它程序提供接口?如何完成 java项目之间怎么互相调用接口 java如何调用别人系统的接口 java 中的一个项目如何做到访问另一个项目的一个方法 或者 页面 java如何调用接口方式 Java常说的接口调用,是怎么调用别人的接口来用的 java怎么调用别人给的接口 有没有热水器的牌子叫沙罗什么的 热水器有叫什么迪的牌子吗 热水器有叫什么克的吗,两个字得名字 能率热水器变压器出来的那个黑盒叫什么? ydhabcd热水器是什么牌子 热水器有个叫啥顿的 热水器ARlISTON叫什么名字是什么牌子的 SHMISE这是什么牌子的热水器 至强E3 1230这款CPU怎么样? 大卫史密斯是什么牌子的热水器 五线谱的符号怎么打啊 java 一个类中的static方法中使用其他接口的方法 现在哪一代苹果手机的像素最好? 一些乐谱符号怎么打出来 java 要调用别人提供的rest api接口接口是url 比如实现简单的增加操作 具体实现哪些步骤? 五线谱在电脑中怎么打出来? java 怎么获取其他项目的webservices 接口 java 利用反射调用其它项目的接口..具体点。。。谢谢。。 五线谱中的升降号怎么用键盘打出来? 苹果手机拍照效果最好的是哪一款 Java如何向外提供接口 java怎么给其他公司提供一个接口,需要对方调用接口返回一个json格式的数据 Java 如何在接口 servlet中,调用其他类对象的方法呢 电脑上怎么打降b调符号 蝌蚪变成青蛙的四副图是怎么画的 苹果手机哪款像素好?(白天与夜间) 怎样用QQ拼音输入法打出音符和五线谱 蝌蚪变青蛙的5个过程概述是什么? 蝌蚪变成青蛙的过程是怎么样的? 小蝌蚪变青蛙过程是什么?看图写话。