Yahoo YQL请求不好

时间:2014-02-21 09:13:40

标签: java http-post yahoo yql

我正在尝试使用包含文本作为输入的文件来使用Yahoo Content Analysis。所以每个角色和长度都是可能的。 此代码使用简单的文本字符串(没有特殊字符,短文本),但是当我使用较长的文本或特殊字符时,我会收到错误请求错误(HTTP 400),有时会出现错误消息,例如“没有可行的替代字符”[' “或没有错误信息。 我对每个请求进行编码,HTTP Post对长度没有任何限制。 Yahoo服务是否限制了请求的长度和/或是否有任何无法处理的字符? 任何帮助这项工作的帮助表示赞赏!

这是我的代码(使用commons-httpclient):

    String fileInput = FileUtils.readFileToString(f);

    StringBuilder builder = new StringBuilder();
    builder.append("http://query.yahooapis.com/v1/public/yql?");
    System.out.println(fileInput);
    builder.append("q=")
            .append(URLEncoder.encode("select * from contentanalysis.analyze where text='"+ fileInput +"'" , "UTF-8"))
            .append("&format=json");

    final String postUrl = builder.toString();
    HttpClient client = new HttpClient();
    PostMethod method = new PostMethod(postUrl);

    // Send POST request
    int statusCode = client.executeMethod(method);

1 个答案:

答案 0 :(得分:0)

我认为问题在于,当您将请求作为HTTP POST发送时,YQL查询和文本都包含在URL中。 YQL实际上没有办法让你直接发出HTTP POST请求,所以我可以想到几个选项:

  1. 使用HTTP POST(docs
  2. 直接使用Content Analysis Web服务
  3. 创建一个自定义YQL数据表,该表使用<execute>标记运行可以执行POST的自定义JavaScript(example
  4. 在这些选项中,我认为前者会更容易。