问题描述:
下面的RecommendTopicAction完成功能:调用腾讯微博API,把结果返回到前端。
/*
 * RecommendTopicAction.java
 *time:2013-11-7
 */
package com.wb.action;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import com.opensymphony.xwork2.ActionSupport;
import com.wb.log.Logger;/**
 * Get the hot trend from Tencent WeiBo~ call the API.
 *
 */
public class RecommendTopicAction extends ActionSupport {
private String key=null;

/** The String is used to Store the recommendtopic from tencent weibo API*/
private InputStream inputStream;

public InputStream getInputStream() {
        return inputStream;
}
public void setInputStream(InputStream inputStream) {
        this.inputStream = inputStream;
}

public void setKey(String key){
this.key=key;
}
public String getKey(){
return this.key;
}
public  InputStream createRecomFromTencent() throws IOException{

final String URL_STRING="https://open.t.qq.com/api/search/ht?keyword=中国&pagesize=20&page=1&format=json&access_token=45138d8faaafa36639936e96ef25652a&oauth_consumer_key=801058005&openid=15E7B1F7C91643F2E5715DD29E294971&oauth_version=2.a&clientip=192.168.122.180&scope=all";
        int responsecode;
        HttpURLConnection urlConnection;
        InputStream line=null;
     
        URL url=new URL(URL_STRING);
        urlConnection = (HttpURLConnection)url.openConnection();
        responsecode=urlConnection.getResponseCode();
        if(responsecode==200){        
              line=urlConnection.getInputStream(); 
              System.out.println(new BufferedReader(new InputStreamReader(line,"utf-8")).readLine());
        }
        else Logger.getLogger().error("连接腾讯微博API出错~");
        return line;
}

public String execute(){

try {

setInputStream(createRecomFromTencent());

} catch (IOException e) {
// TODO Auto-generated catch block
Logger.getLogger().error("网络出现异常:"+e);
}

return SUCCESS;
}

public static void main(String args[]) throws IOException{
RecommendTopicAction a=new RecommendTopicAction();
a.createRecomFromTencent();
}
}
前端JS请求如下:
  function recomTopic(){
        $.ajax({
            url: "<%=basePath %>RecommendServlet.servlet",
            type: "post",
            dataType : "json",
            data:{"keyword":keyword},
            success : show 
})
    }
在action中跑main函数,System.out打印结果
{"data":{"hasnext":1,"info":[{"favnum":256,"id":"14788155191417781697","text":"中国","tweetnum":35029},{"favnum":64202,"id":"3958183173820082117","text":"中国好声音","tweetnum":1484871},{"favnum":45364,"id":"16672418334819547826","text":"中国达人秀","tweetnum...(没全写出来)
但是启动项目,前端JS调用,打印结果却是空
{"data":null,"errcode":0,"msg":"result is empty","ret":0,"seqid":5945197330038810832}
求解惑???

解决方案 »

  1.   

    是你的代码返回问题。吧。 最后你把你的json out 到你的前台。 你网上搜一下,strtus2 ajax json
      

  2.   

    在action中跑main函数来测试,System.out那句话打印结果如下,
    {"data":{"hasnext":1,"info":[{"favnum":256,"id":"14788155191417781697","text":"中国","tweetnum":35029},{"favnum":64202,"id":"3958183173820082117","text":"中国好声音","tweetnum":1484871},{"favnum":45364,"id":"16672418334819547826","text":"中国达人秀","tweetnum...(没全写出来)
    启动WEB项目后,前端JS调用,System.out.println那句话打印结果却是空,如下
    {"data":null,"errcode":0,"msg":"result is empty","ret":0,"seqid":5945197330038810832}
    结果又返回,但是空的
      

  3.   

    在action中跑main函数来测试,System.out那句话打印结果如下,
    {"data":{"hasnext":1,"info":[{"favnum":256,"id":"14788155191417781697","text":"中国","tweetnum":35029},{"favnum":64202,"id":"3958183173820082117","text":"中国好声音","tweetnum":1484871},{"favnum":45364,"id":"16672418334819547826","text":"中国达人秀","tweetnum...(没全写出来)
    启动WEB项目后,前端JS调用,System.out.println那句话打印结果却是空,如下
    {"data":null,"errcode":0,"msg":"result is empty","ret":0,"seqid":5945197330038810832}
    结果又返回,但是空的

    你最好还是打个断点debug一下吧