2011-10-16 217 views
0

我試圖通過POST請求將數據從Android智能手機發送到REST Web服務。POST請求未到達服務器

有對客戶端沒有錯誤,但在服務器端是沒有如果我發送的數據執行的代碼:

客戶:

public void connect2server(View v) throws IOException { 

    HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("http://192.168.1.108:8182"); 

try { 
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
    nameValuePairs.add(new BasicNameValuePair("id", "12345")); 
    nameValuePairs.add(new BasicNameValuePair("stringdata", "data")); 
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
    HttpResponse response = httpclient.execute(httppost); 

    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
    } 
} 

服務器端:

public class data_server extends ServerResource { 

public static void main(String[] args) throws Exception { 
    // Create the HTTP server and listen on port 8182 
    new Server(Protocol.HTTP, 8182, data_server.class).start(); 
} 

@Post 
public String toString1() throws IOException { 
    System.out.println(getRequestEntity().getText()); 
    return "ok"; 
} 

} 

這是如何造成的,我該如何解決這個問題?

回答

1

有沒有錯誤,因爲你正在捕捉錯誤,什麼也不做。

嘗試將以下內容添加到catch塊中,您應該會看到LogCat輸出中發生了什麼。記得進口日誌類

Log.w("com.name.pkg", e); 

其中「com.name.pkg」只是一個標籤,所以幫助你過濾。通常是程序的名稱。或者,通常使用的方法是向Toast.makeText(...)。show();發送一個Toast.txt.txt,然後發送Toast.makeText(...)。與e.getMessage()但我不喜歡這樣做,所以我不推薦它。你最好把一個字符串傳回給調用函數,並允許它做吐司。

+0

謝謝,ive添加了log命令,但logcat中沒有顯示錯誤... – FavoriteT

+0

你不需要設置你的url爲'http://192.168.1.108:8182/toString' – Merlin