2014-02-21 2 views
0

텍스트를 입력 파일로 사용하여 Yahoo Content Analysis를 사용하려고합니다. 그래서 모든 문자와 길이가 가능합니다. 이 코드는 간단한 텍스트 문자열 (특수 문자, 짧은 텍스트 없음)과 함께 작동하지만 길이가 긴 텍스트 나 특수 문자를 사용할 때 잘못된 요청 오류 (HTTP 400)가 발생하는 경우가 있습니다 ''또는 오류 메시지없이. 모든 요청을 인코딩하고 HTTP Post에 길이 제한이 없어야합니다. Yahoo 서비스는 요청 길이에 제한을 두거나 처리 할 수없는 문자가 있습니까? 도움이 될만한 도움을 주신 모든 분들께 감사드립니다! 나는 문제가 당신이 HTTP의 POST로 요청을 보내는 동안 YQL 쿼리 및 텍스트가 모든 URL에 포함되어 있는지 생각Yahoo YQL 불량 요청

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); 

답변

0

:

여기 (-HttpClient를 공유지를 사용) 내 코드입니다. 직접 HTTP POST 요청을하는 YQL은 정말 방법이없는, 그래서 몇 가지 옵션을 생각할 수 있습니다 :

  1. 가 직접 (docs)
  2. 를 작성하는 HTTP POST와 내용 분석 웹 서비스를 사용 POST가 (example) 나는 이전이 쉬울 것이라고 생각이 옵션의

을 할 수있는 사용자 정의 자바 스크립트를 실행하는 <execute> 태그를 사용하여 사용자 정의 YQL 데이터 테이블.

+0

이것은 내가이 매개 변수로 쿼리를 POST하면 작동하는 것 같습니다 : method.addParameter ("q", "select * from contentanalysis.analyze where text = '"+ fileInput + "'"); 물론 그건 당신이 수동으로 따옴표를 벗어나야한다는 것을 의미합니다. 이전 코드가 작동하지 않는 데는 몇 가지 이유가있을 수 있습니다. - URL 길이에 실제 제한이 없어야하지만 URL이 너무 길어서 Yahoo API를 처리 할 수 ​​없습니다. - URLEncoder를 사용하기 전에 따옴표를 이스케이프 처리하지 않습니다. 어쨌든 도와 주셔서 감사합니다! –