0

JSON情報をWebサービスに送信して情報を検証するAndroidアプリケーションがあります。Web サービスのエディターとして Kate を使用しています。JSON および php Web サービスの概念は、私にとって新しいものです。私は通常Javaでコーディングします。

    JSONObject jsonObject = new JSONObject();

    String userID = "";

    HttpClient httpClient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost(loginURI);
    HttpParams httpParams = new BasicHttpParams();
    HttpConnectionParams.setConnectionTimeout(httpParams, 10000);
    HttpConnectionParams.setSoTimeout(httpParams,10000);

    try {

        jsonObject.put("username", username);
        Log.i("username", jsonObject.toString());
        jsonObject.put("password", password);
        Log.i("password", jsonObject.toString());

        StringEntity stringEntity = new StringEntity(jsonObject.toString());
        stringEntity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
        httpPost.setEntity(stringEntity);
        HttpResponse httpResponse = httpClient.execute(httpPost);

        HttpEntity entity = httpResponse.getEntity();

        if (entity != null) {
            userID = EntityUtils.toString(httpResponse.getEntity());
            Log.i("Read from server", userID);
         }


    }catch (IOException e){
        Log.e("Login_Issue", e.toString());
    }catch (JSONException e) {
        e.printStackTrace();  
    }


    return userID;
}

StringEntity コードをオンラインで見つけて、うまくいくと思いました。HttpPost の StringEntity の目的がわかりません。

これはphpで書かれた私のWebサービスです。

include('dbconnect.php'); 

$tablename = 'users';

//username and password sent from android
$username=$_POST['myusername'];
$password=$_POST['mypassword'];

//protecting mysql injection
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);

#$array = array($username,$password);
$sql = "SELECT first_name FROM $tablename WHERE u_username='$username' AND    u_password=MD5('$password')"; 
//Querying the database
$result=mysql_query($sql);

if(!$result){
   die(mysql_error();
}


//If found, number of rows must be 1
if((mysql_num_rows($result))==1){

//creating session
session_register("$username");
session_register("$password");

print true;
}else{
print false;
}

mysql_close();

「ユーザー名」と「パスワード」がAndroidアプリからWebサービスに正しく送信されているかどうかはよくわかりません。どうすればこれを確認できますか? また、Web サービスと Java コードは、JSON で情報を送信するように適切に記述されていますか?

ブラウザで Web サービスにアクセスすると、次のエラーが表示されます: Parse error: parse error in E:\wamp\www\mobile.dcl.mu\webserver\login.php on line 24

前もって感謝します。

4

1 に答える 1

0

あなたは噛みつきすぎようとします。それは、6 つの異なる質問のようにする必要があります (または、誰かにお金を払ってスクリプトを書いてもらうか、技術を個別に学習する時間を費やしてください)。最初に修正する 2 つの点:

  • 解析エラーを修正してください! これは、コンパイルできない Java ソースがあるかのようです。エラーは、後の閉じ括弧を忘れたことですdie (mysql_error();
  • いいえ、とにかく機能しません。本文のデータを として送信し、application/jsonそれを URL エンコード形式で読み取ろうとします。あなたが望むものを決定し、それについて助けを求めてください。
  • ストリップスラッシュを削除します。セキュリティを追加するものではなく、誰かがパスワードにスラッシュを使用している場合、エラーが発生します。Magic_quotes をオンにしていない限り、これはすべきではありません。

非常に早い段階で 3 つの非常に基本的な間違いを犯してしまったので、実際には、さらに多くの修正が必要であると確信しています。全体を書き直すか、PHP プログラミングと Web アプリケーション プログラミングに関する一般的なリンクを送信する以外に、あなたを助ける方法はありません。問題を分割し、個別にテストし、より多くの質問をすることができれば、希望があるかもしれません。

アップデート

JSON を中心に標準化する場合、PHP ファイルの一般的なパターンは次のようになります。

// get the body of the HTTP request (that's the "http entity")
$body = file_get_contents('php://input');

// translate JSON into ordinary PHP array:
$entity = json_decode($test, true);

// Now you can read parts of it as if you read an array;
// the data may be nested and will mirror exactly your JSONObject:

$username=$entity['myusername'];
$password=$entity['mypassword'];

[はい、それは賛成票を求めている私です:-)]

[あなたの Java コードにはもっと問題があると思いますが、一度に 1 つずつ]

于 2013-02-13T13:32:47.293 に答える