2012-11-07 127 views
0

我有一個使用cakephp創建的網站。我想將我的應用程序中形成的一些值傳遞給此網站。當我在瀏覽器中輸入完全相同的URL時,它可以工作。CakePHP的Android HTTP請求URL

的URL是這樣的:www.something.com/function/add/value

所以我很困惑,如果這是一個GET或POST方法?我該怎麼做?

問題是我不能改變這個URL或者在那裏放一些POST或者GET PHP腳本來獲取值。所以我基本上只需要用這些參數來調用URL。

這是我的代碼:

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = null; 
try { 
     httppost = new HttpPost("www.something.com/function/add/" + URLEncoder.encode(txtMessage.getText().toString(), "UTF-8")); 
} catch (UnsupportedEncodingException e1) { 
     e1.printStackTrace(); 
} 

try { 
     ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
     httpclient.execute(httppost, responseHandler); 
} catch (ClientProtocolException e) { 
} catch (IOException e) { 
} 

回答

1

創建List<NameValuePair>,並把這裏你值( 「someValue中」 例子)。用您的值創建DefaultHttpClient()設置nameValuePairs

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
nameValuePairs.add(new BasicNameValuePair("tag", "TEST_TAG")); 
nameValuePairs.add(new BasicNameValuePair("valueKey", "somevalue")); 
HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("www.something.com/function/add/utils.php"); 
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8)); 
HttpResponse response = httpclient.execute(httppost); 
HttpEntity entity = response.getEntity(); 
InputStream is = entity.getContent(); 
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8); 
StringBuilder sb = new StringBuilder(); 
String line = ""; 
while ((line = reader.readLine()) != null) { 
    sb.append(line + "n"); 
} 
is.close(); 
Log.i("response", sb.toString()); 

在服務器側/function/add/utils.php得到你的重視

if (isset($_POST['tag']) && $_POST['tag'] != '') { 
    $tag = $_POST['tag']; //=TEST_TAG 
    $value = $_POST['valueKey']; //=somevalue 
} 
//and return some info 
$response = array("tag" => $tag, "success" => 0, "error" => 0); 
$response["success"] = 1; 
echo json_encode($response); 

$response你在Java代碼HttpEntity entity = response.getEntity() recive。它可能會幫助你。

+0

我很抱歉,我認爲8不夠清楚。我的網址不包含PHP文件或任何東西。只是一個普通的URL(CakePHP創建它們的方式...)服務器直接從URL讀取值。還有其他的方式嗎? – user754730

+0

你有一個類似'www.something.com/function/add /'的鏈接,帶有一些值。嘗試在服務器上查找處理程序文件。在這個目錄中'function/add /'必須是'index.php'。在那兒? – validcat

+0

不,沒有PHP文件,也沒有辦法可以做到。鏈接www.something.com/function/add/myvaluetobeadded就是這樣的。然後CakePHP知道「myvaluetobeadded」是我給網站的實際價值,如果我用瀏覽器導航到網站,它的效果很好。 – user754730