2011-10-16 24 views
0

AndroidスマートフォンからPOST要求を介して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クラスをインポートすることを忘れないでください。

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

ここで、「com.name.pkg」はフィルタリングに役立つタグです。通常はプログラムの名前。

また、Toast.makeText(...)を使用してトーストを送信することが非常に一般的です。show(); e.getMessage()を使用していますが、私はそれをしたくないので、私はそれをお勧めしません。文字列を呼び出し元の関数に渡して、それをトーストすることをお勧めします。

+0

ありがとう、iveはlogコマンドを追加しましたが、logcat ... – FavoriteT

+0

にエラーは表示されません。あなたのURLを 'http://192.168.1.108:8182/toString'のように設定する必要はありません – Merlin

関連する問題