2012-10-22 67 views
1

快速的問題,因爲我已經嘗試了許多調試選項並沒有幫助找出問題所在。我正在使用Java和Apache HttpPost庫。的Java httpPost無法正常發佈的數據(Apache的庫)?

我有HTTPGET和httpHead目前工作正常,但我不能讓httpPost正確發送的變量。我成立了一個調試PHP腳本我的服務器上簡單地傾倒的$_POST內容。如果我在終端上進行卷曲請求,則工作正確。

代碼片斷:

// create new HttpPost object 
    postRequest = new HttpPost(url); 

    // add post variables 
    postRequest.setEntity(new StringEntity(body, ContentType.TEXT_HTML)); 

    // execute request 
    response = executeRequest(postRequest); 

字符串變量 「身體」 是隻是一個字符串,目前含有 「測試=測試」。從這個PHP調試腳本的輸出:

<?php 

    echo "Input Stream: "; 

    var_dump(file_get_contents('php://input')); 

    echo "POST Variables: "; 

    var_dump($_POST); 

?> 

是:

Input Stream: string(12) "test=testing" 
POST Variables: array(0) { 
} 

有誰知道它爲什麼沒有得到回升,並傾倒在$_POST變量?因爲我花了幾個小時在這裏,非常惱火!

任何幫助:)謝謝

+0

當你說「Apache HttpPost」庫時,你的意思是[HttpComponents HttpClient庫](http://hc.apache.org/httpcomponents-client-ga/index.html)? – david

+0

@大衛,是的,我使用這些庫 –

+0

什麼是您executeRequest方法嗎? – Alex

回答

0

意識到見Access all entries of HttpParams

要構建URI包括參數,用途:

NameValuePair nvp = new BasicNameValuePair("test", "testing"); 
String query = URLEncodedUtils.format(nvp, "utf-8"); // use your favourite charset here 
URI uri = new URI("http://localhost/app?" + query; 
HttpPost postReq = new HttpPost(uri); 
httpClient.execute(postReq); 

這將導致:http://localhost/app?test=testing被請求。