0

こんにちは、正しい認証情報でログイン ボタンを押した後、エラーが発生しました。dbconnection が適切に設定され、php API が機能しています。Webブラウザで試してみました。

Javaコードは次のとおりです。

package com.example.test;


import java.util.ArrayList;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;

import com.capstone.istudyUser.SProfile;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

    private EditText user, pass;
    private Button mSubmit, mRegister;

     // Progress Dialog
    private ProgressDialog pDialog;

    // JSON parser class
    JSONParser jsonParser = new JSONParser();

    private static final String LOGIN_URL = "http://192.168.42.59/test/login.php";


    //JSON element ids from repsonse of php script:
    private static final String TAG_SUCCESS = "success";
    private static final String TAG_MESSAGE = "message";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        user = (EditText)findViewById(R.id.iUsername);
        pass = (EditText)findViewById(R.id.iPassword);

        mSubmit = (Button)findViewById(R.id.bLogin);
        mRegister = (Button)findViewById(R.id.RStudent);

        mSubmit.setOnClickListener(this);
        mRegister.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.bLogin:
            new AttemptLogin().execute();
            break;
        case R.id.RStudent:

            break;

        default:
            break;
        }
    }

    class AttemptLogin extends AsyncTask<String, String, String> {

         /**
        * Before starting background thread Show Progress Dialog
        * */
        boolean failure = false;

       @Override
       protected void onPreExecute() {
           super.onPreExecute();
           pDialog = new ProgressDialog(MainActivity.this);
           pDialog.setMessage("Attempting login...");
           pDialog.setIndeterminate(false);
           pDialog.setCancelable(true);
           pDialog.show();
       }

        @Override
        protected String doInBackground(String... args) {
            // TODO Auto-generated method stub
             // Check for success tag
           int success;
           String username = user.getText().toString();
           String password = pass.getText().toString();
           try {
               // Building Parameters
               List<NameValuePair> params = new ArrayList<NameValuePair>();
               params.add(new BasicNameValuePair("username", username));
               params.add(new BasicNameValuePair("password", password));

               Log.d("request!", "starting");
               // getting product details by making HTTP request
               JSONObject json = jsonParser.makeHttpRequest(
                      LOGIN_URL, "POST", params);

               // check your log for json response
               Log.d("Login attempt", json.toString());

               // json success tag
               success = json.getInt(TAG_SUCCESS);
               if (success == 1) {
                Log.d("Login Successful!", json.toString());
                return json.getString(TAG_MESSAGE);
               }else{
                Log.d("Login Failure!", json.getString(TAG_MESSAGE));
                return json.getString(TAG_MESSAGE);

               }
           } catch (JSONException e) {
               e.printStackTrace();
           }

           return null;

        }
        /**
        * After completing background task Dismiss the progress dialog
        * **/
       protected void onPostExecute(String file_url) {
           // dismiss the dialog once product deleted
           pDialog.dismiss();
           if (file_url != null){
            Toast.makeText(MainActivity.this, file_url, Toast.LENGTH_LONG).show();
           }

       }

    }



}

私のプログラムのどこが悪いのだろうか :(

ここにログの猫があります: http://pastebin.com/wzXzCShH

4

3 に答える 3

0

NullPointer execption は、インターネット許可を要求していないことが原因である可能性が高いことに同意します。

以下の行をマニフェストに追加します。

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

次のように追加の catch ブロックを追加することで、失敗した場合でも強制終了を回避できるはずです。

} catch (JSONException e) {
           e.printStackTrace();
} catch (NullPointerException npe){
    npe.printStackTrace();
}

これにより、アプリを正常に続行できます。(たとえば、php スクリプトが壊れて有効な JSON 文字列が返されない場合や、デバイスが機内モードになっている場合やネットワークがダウンしている場合など、何らかの理由で URL に到達できない場合にカバーするので、これは持っておくと便利です)

于 2013-08-06T10:16:32.797 に答える
0

@Dandelo Darky Cardona - IPアドレスがローカルホストにアクセスしていることを確認し、ブラウザにIPアドレスを入力して、許可が拒否されていないかどうかを確認してください。 、IPアドレスに問題があることを知るまで。

于 2014-12-22T13:55:36.567 に答える