Выполнение запроса HTTPS Post с использованием XML в Java - PullRequest
2 голосов
/ 29 сентября 2011

Я пытаюсь использовать API из Web Of Knowledge (WoK) для получения некоторых данных. В документации объясняется, что вы должны выполнять POST-запросы через HTTPS, отправляя XML, который содержит запросы. Но я получаю только ошибку 400 на сервере форм. (Неверный запрос)

Вот мой код, я нашел его в Google и исправляю свой случай.

public static void main(String[] args) throws Exception {



    // Get target URL
    String strURL = /*Here the Server URL*/;

    // Get file to be posted
    String strXMLFilename = "src/main/resources/xml/wosdata.xml";
    File input = new File(strXMLFilename);

    // Prepare HTTP post
    PostMethod post = new PostMethod(strURL);

    // Request content will be retrieved directly
    // from the input stream
    // Per default, the request content needs to be buffered
    // in order to determine its length.
    // Request body buffering can be avoided when
    // content length is explicitly specified
    post.setRequestEntity(new InputStreamRequestEntity(
            new FileInputStream(input), input.length()));

    // Specify content type and encoding
    // If content encoding is not explicitly specified
    // ISO-8859-1 is assumed
    post.setRequestHeader(
            "Content-type", "text/xml; charset=ISO-8859-1");

    // Get HTTP client
    HttpClient httpclient = new HttpClient();



    // Execute request
    try {

        int result = httpclient.executeMethod(post);

        // Display status code
        System.out.println("Response status code: " + result);

        // Display response
        System.out.println("Response body: ");
        System.out.println(post.getResponseBodyAsString());


    }catch (Exception e) {
        e.printStackTrace();

    } finally {
        // Release current connection to the connection pool 
        // once you are done
        post.releaseConnection();
    }
}

Ответы [ 2 ]

1 голос
/ 29 сентября 2011

Что-то не так с отправляемым вами XML.Вам нужно будет просмотреть журналы сервера, чтобы узнать, что именно, а 400 намеренно говорит вам как можно меньше.

0 голосов
/ 29 сентября 2011

Вы должны сделать это так. Сначала прочитайте содержимое xml to String и выполните публикацию, используя StringRequestEntity.

// Get file to be posted
String strXMLFilename = "src/main/resources/xml/wosdata.xml";
StringBuilder contents = new StringBuilder();

try {
  BufferedReader input =  new BufferedReader(new FileReader(new File(strXMLFilename)));
  try {
    while (( line = input.readLine()) != null){
      contents.append(line);
      contents.append(System.getProperty("line.separator"));
    }
  }
  finally {
    input.close();
  }



  StringEntity requestEntity = new StringEntity(contents.toString());
  post.setEntity(requestEntity);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...