2012-09-27 44 views
1

在這裏做一個GET請求代碼:HttpURLConnection的即使setDoOutput(真),setRequestMethod( 「POST」)調用setRequestProperty(「內容

String Surl = "http://mysite.com/somefile"; 
String charset = "UTF-8"; 
query = String.format("param1=%s&param2=%s", 
URLEncoder.encode("param1", charset), 
URLEncoder.encode("param2", charset)); 

HttpURLConnection urlConnection = (HttpURLConnection) new URL(Surl + "?" + query).openConnection(); 
urlConnection.setRequestMethod("POST");    
urlConnection.setDoOutput(true); 
urlConnection.setUseCaches(false); 
urlConnection.setAllowUserInteraction(false); 
urlConnection.setRequestProperty("Accept-Charset", charset); 
urlConnection.setRequestProperty("User-Agent","<em>Android</em>"); 
urlConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded;charset=" + charset);     
urlConnection.connect(); 

上面還做了GET要求我在使用PHP服務器和我能夠通過$_GET變量,而不是$_POST變量
測試2.3.7(設備)上訪問查詢的「名稱=值」 PARAMS。

我缺少什麼?

+0

這看起來有點可疑:Surl +「?」 +查詢。你如何驗證它正在做一個獲取請求? – tjg184

+0

@ tjg184我在服務器上使用PHP,並且能夠通過$ _GET變量訪問查詢的'name = value'參數,而不是'$ _POST'變量。 – ThinkingMonkey

回答

3

當您在url中發送參數時,它們將放入GET變量中。您應該在請求的POST正文中發佈參數,以實現您正在尋找的內容。您應該在connect()調用之前添加以下內容並刪除「?」 +從網址查詢。

urlConnection.setRequestProperty("Content-Length", String.valueOf(query.getBytes().length));    
    urlConnection.setFixedLengthStreamingMode(query.getBytes().length); 

    OutputStream output = new BufferedOutputStream(urlConnection.getOutputStream());    
    output.write(query.getBytes()); 
    output.flush(); 
    output.close(); 
+0

不知道在做帖子時必須手動寫入參數!這解決了它。謝謝。 – ThinkingMonkey

相關問題