HTTP是一个客户端和服务器端请求和应答的标准(TCP),客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。

具体POST或GET实现代码如下:

package com.yoodb.util;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;public class HttpConnectUtil {private static String DUOSHUO_SHORTNAME = "yoodb";//多说短域名 ****.yoodb.****private static String DUOSHUO_SECRET = "xxxxxxxxxxxxxxxxx";//多说秘钥/*** get方式* @param url* @author www.yoodb.com* @return*/public static String getHttp(String url) {String responseMsg = "";HttpClient httpClient = new HttpClient();GetMethod getMethod = new GetMethod(url);getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,new DefaultHttpMethodRetryHandler());try {httpClient.executeMethod(getMethod);ByteArrayOutputStream out = new ByteArrayOutputStream();InputStream in = getMethod.getResponseBodyAsStream();int len = 0;byte[] buf = new byte[1024];while((len=in.read(buf))!=-1){out.write(buf, 0, len);}responseMsg = out.toString("UTF-8");} catch (HttpException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {//释放连接getMethod.releaseConnection();}return responseMsg;}/*** post方式* @param url* @param code* @param type* @author www.yoodb.com* @return*/public static String postHttp(String url,String code,String type) {String responseMsg = "";HttpClient httpClient = new HttpClient();httpClient.getParams().setContentCharset("GBK");PostMethod postMethod = new PostMethod(url);postMethod.addParameter(type, code);postMethod.addParameter("client_id", DUOSHUO_SHORTNAME);postMethod.addParameter("client_secret", DUOSHUO_SECRET);try {httpClient.executeMethod(postMethod);ByteArrayOutputStream out = new ByteArrayOutputStream();InputStream in = postMethod.getResponseBodyAsStream();int len = 0;byte[] buf = new byte[1024];while((len=in.read(buf))!=-1){out.write(buf, 0, len);}responseMsg = out.toString("UTF-8");} catch (HttpException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {postMethod.releaseConnection();}return responseMsg;}
}

1、下面说一下多说单点登录(SSO)获取access_token访问多说API的凭证。

多说单点登录(SSO),授权结束后跳转回在sso中设置的login地址,注意这时候的URL带上了code参数,通过code获取access_token访问多说API的凭证,具体实现代码如下:

public Map<String, String> getUserToken(String code){String url = "http://api.duoshuo.com/oauth2/access_token";String response = HttpConnectUtil.postHttp(url, code, "code");System.out.println(response);Gson gson = new Gson();Map<String, String> retMap = gson.fromJson(response,new TypeToken<Map<String, String>>() {}.getType()); return retMap;
}

返回参数是一个JSON串,包含user_id和access_token,user_id是该用户在多说的ID,access_token是访问多说API的凭证,处理成Map集合方便使用。

2、如果获取多说的用户信息,根据上一步获得的多说用户user_id来获取用户的具体信息,详情代码如下:

public Map getProfiletMap(String userId){String url = "http://api.duoshuo.com/users/profile.json?user_id="+userId;String response = HttpConnectUtil.getHttp(url);response = response.replaceAll("\\\\", "");System.out.println(response);Gson gson = new Gson();Map profile = gson.fromJson(response, Map.class);return profile;
}

上述使用了Google处理json数据的jar,如果对Gson处理json数据的方式不很了解,参考地址:http://www.yoodb.com/article/display/1033

返回的数据格式如下:

{"response": {"user_id": "13504206","name": "伤了心","url": "http://t.qq.com/wdg1115024292","avatar_url": "http://q.qlogo.cn/qqapp/100229475/F007A1729D7BCC84C106D6E4F2ECC936/100","threads": 0,"comments": 0,"social_uid": {"qq": "F007A1729D7BCC84C106D6E4F2ECC936"},"post_votes": "0","connected_services": {"qqt": {"name": "伤了心","email": null,"avatar_url": "http://app.qlogo.cn/mbloghead/8a59ee1565781d099f3a/50","url": "http://t.qq.com/wdg1115024292","description": "没劲","service_name": "qqt"             },"qzone": {"name": "?郁闷小佈?","avatar_url": "http://q.qlogo.cn/qqapp/100229475/F007A1729D7BCC84C106D6E4F2ECC936/100","service_name": "qzone"             }}},"code": 0
}

获取的用户信息不方便查看,建议格式化一下,Json校验或格式化地址:http://www.yoodb.com/toJson,返回数据参数说明:

code int 一定返回

结果码。0为成功。失败时为错误码。

errorMessage strin

错误消息。当code不为0时,返回错误消息。

response object

json对象。当code为0时,返回请求到的json对象。

JAVA 调用HTTP接口POST或GET实现方式相关推荐

  1. JAVA调用SAP接口地址_Java以webservice方式调用SAP接口传输数据

    Java以webservice方式调用SAP接口传输数据,在SAP中生成 会计凭证/冲销会计凭证 1.生成会计凭证(已完成) 2.冲销会计凭证(以下教程截图以该接口为例) Java调用sap的webs ...

  2. Java 调用http接口(基于OkHttp的Http工具类方法示例)

    目录 Java 调用http接口(基于OkHttp的Http工具类方法示例) OkHttp3 MAVEN依赖 Http get操作示例 Http Post操作示例 Http 超时控制 工具类示例 Ja ...

  3. java调用飞信接口免费短信发送到对方手机

    原文:java调用飞信接口免费短信发送到对方手机 源代码下载地址:http://www.zuidaima.com/share/1550463460084736.htm 飞信发送信息限(移动用户) 1. ...

  4. java调用接口速度慢,Java 调用 webservice 接口,为什么这么慢

    Java 调用 webservice 接口,为什么这么慢,有没有好的优化方案,本人目前改成 http 方式发 soap 消息调用,速度依旧很慢,维持在平均 100ms 下不来. 之前用 cxf 的 J ...

  5. 第二篇:java调用公共数据接口:上海市车辆基本信息查询(java调用soap接口)

    java调用公共数据接口:上海市数据公共开放平台 前言 一.找个接口作为案例 二.查看文档 1.查看接口文档 2.确认接口地址与参数 三.编码(找代码直接跳这里!) 1.先创建一个返回数据的实体类 2 ...

  6. 第一篇:java调用公共数据接口:QQ在线状态查询(java调用http接口)

    java调用公共数据接口: webxml 前言 一.以webxml上的一个接口为案例 二.查看接口文档 1.查看支持的调用方式 2.确认接口地址与参数 三.编码(找代码直接跳这里!) 1.配置Rest ...

  7. 【转】java调用http接口的几种方式总结

    java调用http接口的几种方式总结 本文参考: https://blog.csdn.net/fightingXia/article/details/71775516 https://www.cnb ...

  8. Java调用REST接口(get,post请求方法)

    网上的调用方法实例千奇百怪,以下为本人自己整理的Java调用rest接口方法实例,包含get请求和post请求,可创建工具类方便调用,其中get.post请求解决了入出参中文乱码问题. get方式请求 ...

  9. java调用restful接口_Java调用RESTful接口的几种方式

    前端一般通过Ajax来调用,后端调用的方式还是挺多的,比如HttpURLConnection,HttpClient,Spring的RestTemplate 服务端代码如下: 服务端接口请求的URL:h ...

最新文章

  1. Day 29:编写你的第一个 Google Chrome 扩展程序
  2. mondrain配置mysql_mondrian 4.7 源码部署(示例代码)
  3. 怎样检测mysql5.5安装成功_64位wiN7系统中装配MySQL5.5.17(测试安装成功哦!)
  4. 虚拟化平台cloudstack(4)——几个异常
  5. 查看数值类型python_Python数据科学实践 | 数据类型
  6. java基础5 (一维)数组和二维数组
  7. AMQ学习笔记 - 16. 确认机制的测试
  8. 多屏系统上播放幻灯片的设想
  9. 在数据库中如果组合主键(假设为stuID和stuName)存在则更新,不存在则新增
  10. 源代码管理工具 (git,CVS,SVN,Clearcase,VSS)
  11. IT牛人---3IE工程师的传奇
  12. [转]挑礼物指南:价格不高却有格调的礼物,送给挑礼物困难症的你(多图预警)...
  13. phpstudy php56 zend,phpstudy集成环境
  14. 顶岗周记篇通用计算机,计算机实习周记20篇
  15. win10怎么取消开机密码
  16. 简单描述进程 vs 线程
  17. 股票期货化数据文档大全覆盖国内6大易的历史数据和实时行情
  18. TICKScript简介
  19. 【Tools】macOS 截图工具推荐xnip(滚动截图截长图、步骤截图)
  20. DirectX游戏开发之3D角色动起(下)

热门文章

  1. 使用Dom4j进行XML解析
  2. tab控件的使用心得
  3. EF Code First 学习笔记:约定配置
  4. linux 防火墙配置命令
  5. php168 的采集规则的改动
  6. FreeBSD BSDiff 被曝高危内存损坏漏洞,时隔4年终修复
  7. hadoop10---消息队列
  8. Java:Overriding与Overloading
  9. [技术] 谈谈编程思想
  10. Mac OS X 下 TAR.GZ 方式安装 MySQL5.6