Java Yahoo YQL错误请求

Java Yahoo YQL错误请求,java,http-post,yahoo,yql,Java,Http Post,Yahoo,Yql,我正在尝试使用Yahoo内容分析,使用包含文本的文件作为输入。所以每个字符和长度都是可能的。 这段代码使用一个简单的文本字符串(没有特殊字符,短文本),但是当我使用较长的文本或特殊字符时,我会收到一个错误的请求错误(HTTP 400),有时会显示一条错误消息,如“字符“[”处没有可行的替代方案”或没有错误消息。 我对每个请求进行编码,HTTP Post不应该对长度有任何限制。 Yahoo服务是否对请求的长度进行了限制和/或是否存在无法处理的字符? 任何帮助,以帮助这项工作是感激的 以下是我的代码

我正在尝试使用Yahoo内容分析,使用包含文本的文件作为输入。所以每个字符和长度都是可能的。 这段代码使用一个简单的文本字符串(没有特殊字符,短文本),但是当我使用较长的文本或特殊字符时,我会收到一个错误的请求错误(HTTP 400),有时会显示一条错误消息,如“字符“[”处没有可行的替代方案”或没有错误消息。 我对每个请求进行编码,HTTP Post不应该对长度有任何限制。 Yahoo服务是否对请求的长度进行了限制和/或是否存在无法处理的字符? 任何帮助,以帮助这项工作是感激的

以下是我的代码(使用commons httpclient):


我认为问题在于,当您以HTTP POST的形式发送请求时,YQL查询和文本都包含在URL中。YQL实际上没有直接发出HTTP POST请求的方法,因此我可以考虑几个选项:

  • 直接将内容分析web服务与HTTP POST()一起使用
  • 创建一个自定义YQL数据表,该表使用
    标记来运行可执行POST()的自定义JavaScript

  • 在这些选项中,我认为前者会更容易。

    如果我将查询作为如下参数发布:method.addParameter(“q”,“select*from contentanalysis.analyze where text='”+fileInput+“”),这似乎是可行的;当然,这意味着您必须手动转义引号。我可以想出一些可能的原因来解释为什么前面的代码不起作用:-URL太长,无法为Yahoo API处理,尽管URL长度不应该有任何实际限制。-无论如何,在使用URLEncoder之前不转义引号谢谢您的帮助!
        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);