私はMonodroid(Android用Mono)で書いているアプリをテストしています。基本的に、私はいくつかの単純なデータを php 投稿 (http:// [my-domain]/register_php?/usrname=blabla&usremail=blabla) を介してデータベースに保存しています (無料の Web ホスティング サービス 000webhost.com を使用しています)。
成功した場合、phpページは単純な文字列で応答を返します
<?php
(...)
if( $success )
{
echo "Success";
}else{
echo "Failure";
}
>
しかし、私のAndroidアプリでは、この単純な文字列が答えとして返されません。むしろ、000webhost.com が提供するサービスを宣伝する完全な HTML ページを受け取ります。しかし、Chrome ブラウザーに URL を入力すると、すべてが正常に機能し、適切なステータスが表示されます (成功したかどうかに関係なく)。
データを投稿するコードは次のとおりです。
byte[] post_data = Encoding.ASCII.GetBytes(string.Format("name={0}&email=
{1}",txt_usr_name.Text,txt_usr_email .Text) );
HttpWebRequest wb_request =
(HttpWebRequest )WebRequest.Create("http://[my-domain]/register_user.php" );
wb_request.Method = "POST";
wb_request.ContentType = "application/x-www-form-urlencoded";
wb_request.ContentLength = post_data.Length;
Stream stream = wb_request.GetRequestStream();
stream.Write( post_data, 0, post_data.Length );
stream.Close();
そして、応答を読み返すコードは次のとおりです。
HttpWebResponse wb_response = ( HttpWebResponse )wb_request.GetResponse();
string status_code = wb_response.StatusCode.ToString();
string server = wb_response.Server.ToString();
Stream answer = wb_response.GetResponseStream();
StreamReader ans_reader = new StreamReader( answer );
string result = ans_reader.ReadToEnd();
AlertDialog.Builder builder = new AlertDialog.Builder( this );
builder.SetTitle( "Connection result" );
builder.SetMessage( result );
builder.SetPositiveButton( "OK", delegate { } );
var dialog = builder.Create();
dialog.Show();
Web サービスを呼び出すときに設定するのを忘れているものはありますか? ご助力ありがとうございます