Java进阶(三十一) Web服务调用

举报
SHQ5785 发表于 2020/12/29 23:18:52 2020/12/29
【摘要】 Java进阶(三十一) Web服务调用 前言       有朋友问了一个问题:如何调用已知的音乐服务接口,服务文档如下:       https://www.evernote.com/shard/s744/sh/c37cd503-68fc-4406-b8f2-5e90095be303/19b67e36aa2ccd19       查看代码之后,按照以往的服务调用方法实...

Java进阶(三十一) Web服务调用

前言

      有朋友问了一个问题:如何调用已知的音乐服务接口,服务文档如下:

      https://www.evernote.com/shard/s744/sh/c37cd503-68fc-4406-b8f2-5e90095be303/19b67e36aa2ccd19

      查看代码之后,按照以往的服务调用方法实现,结果无法实现。很是费解,求教大师兄之后,问题,迎刃而解,只能说自己需要学习的地方还有很多。

     完整代码如下:

 


  
  1. package plan.http.util;
  2. import java.io.IOException;
  3. import java.io.UnsupportedEncodingException;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import org.apache.http.HttpEntity;
  7. import org.apache.http.NameValuePair;
  8. import org.apache.http.client.ClientProtocolException;
  9. import org.apache.http.client.entity.UrlEncodedFormEntity;
  10. import org.apache.http.client.methods.CloseableHttpResponse;
  11. import org.apache.http.client.methods.HttpPost;
  12. import org.apache.http.impl.client.CloseableHttpClient;
  13. import org.apache.http.impl.client.HttpClients;
  14. import org.apache.http.message.BasicNameValuePair;
  15. import org.apache.http.util.EntityUtils;
  16. public class HttpClientUtil {
  17. public static void main(String[] args) throws Exception {
  18. HttpClientUtil.getByHttpPost();
  19. }
  20. public static String getByHttpPost() throws Exception {
  21. // 1.创建HttpClient对象。(创建默认的httpClient实例.)
  22. CloseableHttpClient httpclient = HttpClients.createDefault();
  23. // 首页
  24. String indexStr = "http://music-download.dev.fotoable.net/musics/lists";
  25. // 搜索
  26. String searchStr = "http://music-download.dev.fotoable.net/public/search";
  27. // 2.创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。(创建httppost)
  28. HttpPost httppost = new HttpPost(searchStr);
  29. List<NameValuePair> formparams = new ArrayList<NameValuePair>();
  30. // 3.如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HetpParams params)方法来添加请求参数;
  31. // 对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。
  32. // 关键词搜索传参(创建参数队列)
  33. formparams.add(new BasicNameValuePair("keyword", "See you again"));
  34. // formparams.add(new BasicNameValuePair("pwd", "123"));
  35. UrlEncodedFormEntity uefEntity;
  36. try {
  37. uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
  38. httppost.setHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0");
  39. httppost.setHeader("Connection", "keep-alive");
  40. httppost.setHeader("Accept-Language","zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3");
  41. httppost.setHeader("Accept-Encoding", "gzip, deflate");
  42. httppost.setHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
  43. httppost.setHeader("JSESSIONID","536020F424630F22DB1F4EAEAD8E83BD");
  44. httppost.setEntity(uefEntity);
  45. System.out.println("executing request " + httppost.getURI());
  46. // 4.调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。
  47. CloseableHttpResponse response = httpclient.execute(httppost);
  48. try {
  49. HttpEntity entity = response.getEntity();
  50. if (entity != null) {
  51. System.out.println("--------------------------------------");
  52. System.out.println("Response content: " + EntityUtils.toString(entity, "UTF-8"));
  53. System.out.println("--------------------------------------");
  54. }
  55. } finally {
  56. response.close();
  57. }
  58. } catch (ClientProtocolException e) {
  59. e.printStackTrace();
  60. } catch (UnsupportedEncodingException e1) {
  61. e1.printStackTrace();
  62. } catch (IOException e) {
  63. e.printStackTrace();
  64. } finally {
  65. try {
  66. // 5. 释放连接。无论执行方法是否成功,都必须释放连接
  67. httpclient.close();
  68. } catch (IOException e) {
  69. e.printStackTrace();
  70. }
  71. }
  72. return null;
  73. }
  74. }

 

参考文献

      http://blog.csdn.net/wangpeng047/article/details/19624529

感触

      自己还是应该多多学习才是,遇到了问题不要紧,要懂得回过头来认真总结,学习。这样才能不断进步。

美文美图

 

文章来源: shq5785.blog.csdn.net,作者:No Silver Bullet,版权归原作者所有,如需转载,请联系作者。

原文链接:shq5785.blog.csdn.net/article/details/51751467

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。