Java实现调用对方http接口得到返回数据

网友投稿 509 2022-06-07


目录Java用对方http接口得到返回数据java后台工具类调用api接口,解析数据一、引入jar包二、httpclient请求接口工具类

Java 用对方http接口得到返回数据

如图所示我们这里自己写一个接口作为访问地址,返回的是json字符串

首先我们在浏览器访问这个接口的地址,会在浏览器打印出如图所示的内容,

然后我们写一个方法访问刚刚的接口地址,使用HttpURLConnextion进行访问,通过BufferedReader获取流,已得到返回的值

运行这个方法,会在控制台打印出接口返回的值,也可以进行相应的操作

如图所示是第二种方法,通过URL进行连接,然后通过openStream方法获取返回值的流转为BufferedReader,然后进行相应的操作

接着赋值url接口地址后,运行后结果如图所示,这里还可以使用jsonfrom等方法对获取的返回值进行json解析,以更方便操作

java后台工具类调用api接口,解析数据

httpclient后台调用接口,解析数据

一 、 引入jar包

org.apache.httpcomponents httpclient 4.5.3 net.sf.json-lib json-lib 2.4 jdk15

二、 httpclient请求接口工具类

2.1 get、post、“head”, “options”, “delete”, "trace"等方式

public class HttpClient { /** * 向目的URL发送post请求 * * @param url 目的url * @param headerParams 请求头参数 key:value * @param bodyParams 请求体参数 key:value * @return */ public static String sendPostRequest(String url, Map headerParams, Map bodyParams) { RestTemplate client = new RestTemplate(); //新建Http头,add方法可以添加参数 HttpHeaders headers = new HttpHeaders(); //给请求头设置参数 for (String key : headerParams.keySet()) { headers.add(key, headerParams.get(key)); } //设置请求发送方式HttpMethod.GET、HttpMethod.DELETE等 HttpMethod method = HttpMethod.POST; // 设置提交方式这里设置成application/json格式 headers.setContentType(MediaType.APPLICATION_JSON); //将请求头部和参数合成一个请求 HttpEntity> requestEntity = new HttpEntity<>(bodyParams, headers); //执行HTTP请求,将返回的结构使用String 类格式化(可设置为对应返回值格式的类) ResponseEntity response = client.exchange(url, method, requestEntity, String.class); //返回类型也可以自动填充到实体类当中去,比如我自己创建了User类,当然字段名称要和返回字段一致 //ResponseEntity response = client.exchange(url, method, requestEntity, User.class); return response.getBody(); }

2.2 PATCH等其他方式

/** * 向目的URL发送patch请求,只比其他方式多了一个允许aptch方式的方法。 * 由于httpclient不支持patch请求,所以需要反射方式获取连接对象,增加patch方式 * @param url 目的url * @param headerParams 请求头参数 * @param bodyParams 请求体参数 * @return AdToutiaoJsonTokenData */ public static String sendPatchRequest(String url, Map headerParams, Map bodyParams) { //httpclient不支持patch请求,反射方式获取连接对象,增加patch方式 allowMethods("PATCH"); RestTemplate client = new RestTemplate(); //新建Http头,add方法可以添加参数 HttpHeaders headers = new HttpHeaders(); //给请求头设置参数 for (String key : headerParams.keySet()) { headers.add(key, headerParams.get(key)); } //headers.add("X-HTTP-Method-Override", "PATCH"); //设置请求发送方式 HttpMethod method = HttpMethod.PATCH; // 设置提交方式这里设置成application/json格式 headers.setContentType(MediaType.APPLICATION_JSON); //将请求头部和参数合成一个请求 HttpEntity> requestEntity = new HttpEntity<>(bodyParams, headers); //执行HTTP请求,将返回的结构使用String 类格式化(可设置为对应返回值格式的类) ResponseEntity response = client.exchange(url, method, requestEntity, String.class); return response.getBody(); } //增加支持patch请求方式 private static void allowMethods(String... methods) { try { //获取连接类的属性,给属性添加aptch就允许aptch请求方式了 Field methodsField = HttpURLConnection.class.getDeclaredField("methods"); Field modifiersField = Field.class.getDeclaredField("modifiers"); modifiersField.setAccessible(true); modifiersField.setInt(methodsField, methodsField.getModifiers() & ~Modifier.FINAL); methodsField.setAccessible(true); String[] oldMethods = (String[]) methodsField.get(null); Set methodsSet = new LinkedHashSet<>(Arrays.asList(oldMethods)); methodsSet.addAll(Arrays.asList(methods)); String[] newMethods = methodsSet.toArray(new String[0]); methodsField.set(null/*static field*/, newMethods); } catch (NoSuchFieldException | IllegalAccessException e) { throw new IllegalStateException(e); } }

2.3 解析数据

//工具类调用api接口,获取返回数据 String result = HttpClient.sendPostRequest(createZoomMeetingUrl,header,body); JSONObject json = JSONObject.fromObject(result); //解析获取数据 String startUrl = json.getString("start_url"); String joinUrl = json.getString("join_url"); //会议室id int id = json.getInt("id"); //解析数据数据 JSONArray jsonArray = json.getJSONArray("users"); for(int i=0;i

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:详解C# WebApi 接口测试工具:WebApiTestClient
下一篇:simplehtmldom Doc api帮助文档(simple html dom)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~