2011-07-19 12 views
1

私は最近Androidプログラミングを始めました。私は問題を見つけました。現在、私は 'sendData'というXML文字列リクエストを作成しています。このsendDataは、ユーザーアカウントが有効かどうかを検証するためにサーバーに送信する必要があります。Android、HTTP経由でサーバーにXML文字列を送信

現在、リクエストを送信しようとすると、私はサーバーと連絡を取りますが、XMLが正しく送信されていないと思わせるデフォルトの一般的な応答エラーが戻ってきます。

public void postData(String sendData) { 
     // Create a new HttpClient and Post Header 
     System.out.println("SENDDATA" + sendData); 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost("http://www......"); 

     try { 
      // Add your data 
      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(0); 
      nameValuePairs.add(new BasicNameValuePair(sendData, sendData)); 
      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

      // Execute HTTP Post Request 
      HttpResponse response = httpclient.execute(httppost); 

      inputStreamToString(response.getEntity().getContent()); 

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

上記は、私がデータを送信するために使用しているコードです。おそらく問題は「試行」セクション内で起こっていると思います。私はこのフォーラムで同様の問題を検索して、私が探していた答えを見つけることができません。

ご協力いただければ幸いです。

おかげで、

EDIT:ログ・猫で

。文字列を印刷すると、このようになります。

07-19 15:35:36.642: INFO/System.out(2204): <Request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.0" xsi:noNamespaceSchemaLocation="http://www.example.com"> 
07-19 15:35:36.642: INFO/System.out(2204): <Identification> 
07-19 15:35:36.642: INFO/System.out(2204): <UserID>[email protected]</UserID> 
07-19 15:35:36.642: INFO/System.out(2204): <Password>password</Password> 
07-19 15:35:36.642: INFO/System.out(2204): </Identification> 
07-19 15:35:36.642: INFO/System.out(2204): <Service> 
07-19 15:35:36.652: INFO/System.out(2204): <ServiceName>AccountVerify</ServiceName> 
07-19 15:35:36.652: INFO/System.out(2204): <ServiceDetail/> 
07-19 15:35:36.652: INFO/System.out(2204): </Service> 

7月19日15:35:36.652:INFO /のSystem.out(2204):

各要素はLogCatでそれ自身のラインを有しています。これが問題だろうか?

+1

1.)表示されるエラーメッセージを投稿してください。 2)catchブロックに何かを入れてください。エラーがキャッチされ、空のcatchブロックに当たって何も表示されず、プログラムは悪い状態で継続します。 – Nate

+0

TCPMonを使ってアプリからのデータを傍受して検証しようとしましたか? – anirvan

+0

エラーメッセージは表示されません。私はcatchブロックに何かを入れます。私はTCPMonを使ったことは一度もありませんが、私はそれを調べます。 – Sad

答えて

2

私は答えを持っている。問題は何も情報がさらに探し時に実際の要求で送信されませんでしたということでした。解決策は、アレイを削除し、新しいエンティティを設定することにより、それを置き換えることでした変更されたコードはb次のとおりです。

 try { 
      StringEntity se = new StringEntity(sendData); 
      httppost.setEntity(se); 
      // Execute HTTP Post Request 
      HttpResponse response = httpclient.execute(httppost); 
      System.out.println("Message Sent!"); 
      inputStreamToString(response.getEntity().getContent()); 
      } 
0

あなたが送信しているものの検出に役立つように、Fiddler Web Debuggerを使用することを強くお勧めします。これは素晴らしいツールであり、多くの時間を節約できます。

のエラー には、投稿したコードに問題があります。

作成しているのArrayListは、0の大きさを持っている、これは1に設定し、より効率的である(一つだけのNameValuePair

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); 

を追加しているとして、最初のBasicNameValuePairコンストラクタパラメータが間違っているといくつかでなければなりませんキー名の種類

nameValuePairs.add(new BasicNameValuePair("mySendData", sendData)); 
+0

実際にArrayList <...>(0)はokです... http://stackoverflow.com/questions/4666024/what-is-the-difference-between-arraylist-al-new-arraylist- and-arraylist-al ...しかし、あなたはBasicNameValuePairについて正しいです:) – Selvin

+0

あなたのコメントを反映するようにこれを更新しました。 – Merlin

関連する問題