从 servlet 中的服务器响应中检索动态 JSONObject 值
Retrieving dynamic JSONObject value from server response in servlets
嗨,我正在从服务器动态获取 servlet 请求的 access_token 值,如下所示: 现在我想在我的 servlet 程序中检索access_taken值。
{
"access_token":"AQWP_EVkqdc7E0wD09J6msmjnUlvilhP304gUIDzl6KKgNxwnHyz_W9nOxS0IroDJwEfVr3n3O-IC9YKc3bjyuwYRm6qbKRiP3A2AzuDjo8ohZERZFRCMyfjjqqDjNJ5J5ReCQDhkFJam51eiqsOeXDg4U_c9XJzc1dUx7Qxck0p9RNE0",
"expires_in": 5183999
}
我的代码如下:
public class Demo extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final String PROTECTED_RESOURCE_URL = "http://api.linkedin.com/v1/people/~:(first-name,last-name,email-address)";
/**
* @see HttpServlet#HttpServlet()
*/
public Demo() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
PrintWriter out=response.getWriter();
String authCode = request.getParameter("code");
request.setAttribute("authCode",authCode);
out.println(authCode);
doPost(request,response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
PrintWriter out=response.getWriter();
Object url=request.getAttribute("authCode");
response.sendRedirect("https://www.linkedin.com/uas/oauth2/accessToken?grant_type=authorization_code&code="+url+"&redirect_uri=http://localhost:8080/LinkedinMails/dem&client_id=xxxxxxxxxxxxx&client_secret=xxxxxxxxxxxxxxx");
}
}
谢谢。
public String doGet(String url) throws Exception {
URL urlObj = new URL(url);
HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection();
conn.setDoOutput(true);
String line;
StringBuffer buffer = new StringBuffer();
BufferedReader reader = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
reader.close();
conn.disconnect();
return buffer.toString();
}
现在你可以从servlet调用此方法,在servlet中获取服务器响应。希望对您有用。
您可以使用 Gson 或 Jackson 库来获取 JSON 响应。使用杰克逊:
new ObjectMapper().readValue(result, LinkedIn.class);
其中结果是包含access_Token
和expires
_in的 JSON
LinkedIn.java
@JsonIgnoreProperties(ignoreUnknown=true)
public class LinkedIn
{
@JsonProperty("access_token")
private String accessToken;
@JsonProperty("expires_in")
private long expiresIn;
// Getters and setters for expiresOn and accessToken
}
在您的 Servlet/Controller 中
LinkedIn l= new ObjectMapper().readValue(result, LinkedIn.class); // Result is your JSON response which has access token and expires from LinkedIn
l.getAccessToken() ; // Returns you access token
l.getExpiresIn() // Returns you the expires time frame
}
使用 JSONObject
String s="{'n" +
" '"access_token'":'"AQWP_EVkqdc7E0wD09J6msmjnUlvilhP304gUIDzl6KKgNxwnHyz_W9nOxS0IroDJwEfVr3n3O-IC9YKc3bjyuwYRm6qbKRiP3A2AzuDjo8ohZERZFRCMyfjjqqDjNJ5J5ReCQDhkFJam51eiqsOeXDg4U_c9XJzc1dUx7Qxck0p9RNE0'",'n" +
" '"expires_in'": 5183999'n" +
"}"; // This contains your access token JSON
JSONParser parser = new JSONParser();
JSONObject o = (JSONObject) parser.parse(s);
System.out.println("Access Token: "+o.get("access_token")); //returns your access token
System.out.println("Expires: "+o.get("expires_in"));
获取访问令牌 JSON:
在你的
Demo
Servlet中,doPost方法,而不是sendRedirect做一个http Post(使用 Apache Http Client 或 java.net)调用 url。一旦HTTP发布完成,你会得到一个Http响应,这将是应用程序/json内容。因此,获取此字符串内容(包含应用程序/json)。此字符串内容是LinkedIn发送给您的access_token。收到回复后,请执行以下操作:JSONParser parser = new JSONParser(); JSONObject o = (JSONObject) parser.parse(responseString); // responseString is the JSON that you got from LinkedIn. System.out.println("Access Token: "+o.get("access_token")); //returns your access token System.out.println("Expires: "+o.get("expires_in"));
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 动态分配GA增强型电子商务跟踪器
- onkeyup无法动态创建多个文本区域
- 使用javascript将动态表从一个html页面打印到另一个html页
- 如何使Javascript动态html表及其上的事件
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 如何使用javascript从主svg对象动态创建svg视图框
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 通过在Dojo mobile ViewController.openExternalView中动态更改打开同一外部视图的
- 如何在Google柱状图中动态添加行/列
- 困在逻辑中试图定位动态的东西
- 在动态创建的元素上获取对特定选择器的引用
- 如何动态插入jquery代码
- 使用Google Visualization动态调用构造函数
- 使用jQuery动态添加表并在其中动态添加行
- d3基于用户选择动态更新节点
- 使用JQuery的动态上下文菜单
- 从 servlet 中的服务器响应中检索动态 JSONObject 值