1

「httppost」メソッドを介してAndroidからWebサービスに登録するためのいくつかの変数(またはデータ)を送信しようとしています。これがコードです。

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://mywebsitename.com/webservice/register.php");
try {
 List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(4);

nameValuePairs.add(new BasicNameValuePair("fname", et3.getText().toString()));
 nameValuePairs.add(new BasicNameValuePair("lname", et4.getText().toString()));
 nameValuePairs.add(new BasicNameValuePair("userid", et5.getText().toString()));
 nameValuePairs.add(new BasicNameValuePair("pass", et6.getText().toString()));
 httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
 httpclient.execute(httppost);

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

以下は、Register.php ファイルのコードです。

<?php
$host = "localhost"; 
$user = "myusername"; 
$pass = "mypass";
$connection = mysql_connect($host,$user,$pass) or die (mysql_errno().": ".mysql_error()."<BR>");

$fname = $_POST['fname'];
$lname = $_POST['lname'];
$userid = $_POST['userid'];
$pass = $_POST['pass'];

$db_select=mysql_select_db("the_db");
if(!$db_select){
    die(mysql_error());
    echo "error";
}

$query= "INSERT INTO USERS(fname, lname, userid, pass)
VALUES ('{$fname}', '{$lname}', '{$userid}', '{$pass}'); " ;

if($medo=mysql_query($query)){
    header("localhost/filename");
    exit;
}else{
    echo"<p> Error</p>";
    die(mysql_error());
}

実行しようとすると、エラーが発生します。デバイスに「YourApp が動作を停止しました」と表示されます。おそらくnullpointer例外またはそのようなものです。これが、名前やパスワードなどの単純な変数を register.php に送信する正しい方法かどうかはわかりません。ここで何が問題なのか教えてもらえますか?

4

1 に答える 1

3

LogCat の出力を見てください。どのクラスのどの行で例外が発生したかを示す必要があります。ヘルプが必要な場合は、logcat の出力をここに投稿してください。Android Asynchronous Http Clientもご覧になることをお勧めします。これにより、HTTP 通信が大幅に簡素化されます。HTTP POST の例:

AsyncHttpClient client = new AsyncHttpClient();
RequestParams rp = new RequestParams();
rp.put("fname", et3.getText().toString());
rp.put("lname", et4.getText().toString());
rp.put("userid", et5.getText().toString());
rp.put("pass", et6.getText().toString());

client.post("http://mywebsitename.com/webservice/register.php", rp, new AsyncHttpResponseHandler() {
    @Override
    public final void onSuccess(String response) {
        // handle your response here
    }

    @Override
    public void onFailure(Throwable e, String response) {
        // something went wrong
    }               
});
于 2013-05-08T18:39:29.427 に答える