0

Androidもともと設計された Web サービスにアプリを接続しようとしてiOSいますが、それが可能かどうかわかりません。私はこの Web サービスも設計していないので、私のものではないこのコードを調べて、ちょっといじっているだけです。現在の Web サービスは で記述され、PHPおよび を使用SOAPWSDLます。この Web サービスに接続できる場合ksoap2は、より良い代替手段が見つからない限り、使用を試みます。この投稿では多くのリンクを使用します。リンクがないと、不快な量のコードを目にすることになるからです。

とにかく、ここで一言で言えば問題です。Web サービス URL の
URL リストのこのリストがあり、そのリストの外観から、これが含まれている iphoneview/iphone_get_details.php
にログイン要求を行う必要があります。get_detailsただし、このコードを使用すると

class LogMeIn extends AsyncTask<String, Void, String> {
    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(
            "http://www.fakesite.com/myv2/iphoneview/iphone_get_details.php");

    protected String doInBackground(String... urls) {

        try {
            username = un.getText().toString();
            password = pw.getText().toString();
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
                    2);
            nameValuePairs
                    .add(new BasicNameValuePair("username", username));
            nameValuePairs
                    .add(new BasicNameValuePair("password", password));
            post.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            HttpResponse response = client.execute(post);
            String res = inputStream(response.getEntity().getContent())
                    .toString();
            Log.v("RESPONSE", res);

            // if username and password are valid, launch main activity
            if (res.toString() == "1") {
                Intent logIn = new Intent(getApplicationContext(),
                        Main.class);
                startActivity(logIn);
            }
            // send the user a message saying the login failed
            else {
                runOnUiThread(new Runnable() {
                    public void run() {
                        pw.setText("");
                        fail.setText(R.string.fail);
                    }
                });
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }

    protected void onPostExecute(String file_url) {

    }
}

私が返すのはこれだけです

05-25 13:57:21.292: V/RESPONSE(5871): <?xml version='1.0' encoding='UTF-8'?><!DOCTYPE plist PUBLIC '-//Apple//DTD PLIST 1.0//EN' 'http://www.apple.com/DTDs/PropertyList-1.0.dtd'><plist version='1.0'><dict><key>iId</key><string>0</string><key>itemChildren</key><array></array></dict></plist>

この応答がどこから来ているかはわかっています。iphoneview/iphone_get_details.phpの一番下にあります。問題は、それが原因かどうかわからないことです

  1. SOAPこれをリクエストでラップする必要があります
  2. このコードは使えません
  3. 間違ったファイルに接続しています (疑います)
  4. 上記のすべておよび/またはその他

今の常識では、現在の iphone_get_details.php ファイルを見ると、「1」または「true」のどちらの応答も受信しないことがわかります。実際のところ、そのファイルは大量の情報を送り返しているように見えますが、本質的には、正しいログイン情報に正しく接続されていることを確認するために必要なのは「1」または「true」だけです。誰かがこの質問に目を通す時間があれば、私は感謝します.

4

2 に答える 2

1
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE plist PUBLIC '-//Apple//DTD PLIST 1.0//EN'http://www.apple.com/DTDs/PropertyList-1.0.dtd'>
<plist version='1.0'>
<dict>
    <key>iId</key>
    <string>0</string>
    <key>itemChildren</key>
    <array></array>
</dict>
</plist>

結果を調べる場合、iIdis は、ユーザー名とパスワードが存在しない場合、 がゼロに設定され0ていることを意味する可能性があります。coz は最初は1 で始まるか、データベース内のユーザーの がそれまでに、データベースで一致したユーザー名とパスワードを言うことができ、ユーザーが提供したパスワードとユーザー名が正しいか、またはその逆であることを意味します。iIdids'siId0

編集:::

私はここであなたのリンクをチェックしましたhttp://pastebin.com/8vv1Vvxjと返されたコードとxmlに基づいて、一致するユーザー名とパスワードがない場合iIdはデフォルト値が であることを示します。ユーザー名とパスワードが正しい。0iId

PHPの初期値

$vUserName      = stripslashes(trim($_REQUEST["txtUser"]));
$vPassword      = stripslashes(trim($_REQUEST["txtPass"]));

$returnFinalString      = "";
$member_id = 0;

.
.
.
//if this condition is true, meaning, the username and password matched and exist
if(mysql_num_rows($member_res)>0){
   $member_id  = $mem_row['user_id'];
}
 //and the $member_id is changed to non-zero

結果については、返されたxmlを解析してiId値を取得し、それが0かどうかを確認するだけで、ユーザーがログインできるかどうかを判断できます。

于 2013-05-28T01:58:06.013 に答える