2013-11-15 3 views
0

У меня есть сайт, который перенаправляет меня на другой сайт с этим PHP код:HTTPClient перенаправлять при использовании метода POST

<?php 
    header("Location: new.php?id=".$_POST["id"]."&test=".rand(5,15)); 
    echo "35"; 
?> 

-new.php

<?php 
    echo "ID: ".$_GET["id"]."| TEST: ".$_GET["test"]; 
?> 

Если я пытаюсь отправить запрос сообщения с HTTPClient сайт не перенаправляет меня на другой сайт (ответ на запрос по почте - 35). Он отлично работает, когда я отправляю запрос Get. ответ запроса: ID: | ТЕСТ: 13.

-http.java

public class Http { 
    public static void main(String[] args) { 
     HttpResponse response; 
     CloseableHttpClient client = HttpClients.createDefault(); 

     HttpPost post = new HttpPost("http://localhost/test.php"); 
     try { 
      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); 
      nameValuePairs.add(new BasicNameValuePair("id","55")); 
      post.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

      response = client.execute(post); 
      BufferedReader rd = new BufferedReader(new InputStreamReader(
        response.getEntity().getContent())); 
      String line = ""; 
      while ((line = rd.readLine()) != null) { 
       System.out.println(line); 
      } 

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

     try { 
      HttpGet get = new HttpGet("http://localhost/test.php"); 
      response = client.execute(get); 
      BufferedReader rd = new BufferedReader(new InputStreamReader(
        response.getEntity().getContent())); 
      String line = ""; 
      while ((line = rd.readLine()) != null) { 
       System.out.println(line); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 


    } 
} 

ответ

2

автоматически перенаправляя запросы POST против стандартов RFC. Поэтому HttpClient не будет делать это по умолчанию. Однако в соответствии с API DefaultRedirectStrategy это может быть достигнуто с использованием LaxRedirectStrategy.

В коде это будет выглядеть что-то вроде:

DefaultHttpClient httpClient = new DefaultHttpClient(); 
    httpClient.setRedirectStrategy(new LaxRedirectStrategy()); 
    httpClient.execute(request); 
Смежные вопросы