2015-06-20 62 views
2

我试图使用HttpsUrlConnection将HTTP POST请求发送到URL。这是我想要做的:无法将HttpURLConnection方法切换到POST

URL requestedUrl = null; 
HttpURLConnection urlConnection = null; 
try { 
      requestedUrl = new URL("https://www.test.local/login/"); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } 
     try { 
      urlConnection = (HttpsURLConnection) requestedUrl.openConnection(); 

      try { 
       urlConnection.setRequestMethod("POST"); 
      } catch (ProtocolException e1) { 
       e1.printStackTrace(); 
      } 
      urlConnection.setRequestProperty("Content-Type","application/json"); 
      urlConnection.setRequestProperty("Accept", "application/json"); 
      urlConnection.setDoInput(true); 
      urlConnection.setDoOutput(true); 
      urlConnection.setUseCaches(false); 
      urlConnection.setConnectTimeout(1500); 

     try { 
       urlConnection.connect(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

当调试我看到RequestMethod仍然是GET,任何想法为什么?

在此先感谢。

+0

'setDoOutput()'已经设置为POST方法。你做了两次。 – EJP

回答

3

使用给定的代码,您应该无法在网络跟踪中看到任何请求。

在给定的片段中,您只能通过urlConnection.connect()打开连接,但不会执行实际的请求,如urlConnection.getContent()。单独的connect()方法不执行请求。

与更换你的最后try-catch块以下应该发送POST请求:

try { 
    urlConnection.connect(); // open the connection 
    urlConnection.getContent(); // send prepared request 
} catch (IOException e) { 
    e.printStackTrace(); 
}