2016-03-23 19 views
1

私はアンドロイドが新しくなっています。私が直面した問題は、アプリケーションを実行しているときにmysqlオンラインサーバからデータを取得できないことです。私のPHPスクリプトは問題ありませんが、ブラウザでPHPスクリプトリンクを開くと、このJSON文字列が表示されます。AndroidアプリはMYSQLからデータを取得しません

{"ID": "1"、 "mobileName": "Nokia"、 "mobileModel": "NA-85 "、" mobilePrice ":" 8500 "}。

私の実際のデバイスやエミュレータで実行されている私のアンドロイドアプリからこのスクリプトを呼び出すと、その行にエラーが表示されます。

int mobid = json.getInt("ID"); 

logcat:

03-23 22:38:29.151 1918-2302/com.example.abdul.sql E/Buffer Error﹕ Error converting result org.json.JSONException: Value <html><body><script of type java.lang.String cannot be converted to JSONObject 
03-23 22:38:29.242 1918-1918/com.example.abdul.sql D/AndroidRuntime﹕ Shutting down VM 
--------- beginning of crash 
03-23 22:38:29.242 1918-1918/com.example.abdul.sql E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.example.abdul.sql, PID: 1918 
java.lang.NullPointerException: Attempt to invoke virtual method 'int org.json.JSONObject.getInt(java.lang.String)' on a null object reference 
     at com.example.abdul.sql.MainActivity$Connectingdb.onPostExecute(MainActivity.java:172) 
     at com.example.abdul.sql.MainActivity$Connectingdb.onPostExecute(MainActivity.java:80) 
     at android.os.AsyncTask.finish(AsyncTask.java:632) 
     at android.os.AsyncTask.access$600(AsyncTask.java:177) 
     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5221) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 

MainActivity.java

import java.io.BufferedReader; 

import java.io.IOException; 

import java.io.InputStream; 

import java.io.InputStreamReader; 

import java.io.UnsupportedEncodingException; 

import java.util.ArrayList; 

import java.util.List; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.client.utils.URLEncodedUtils; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 
import org.json.JSONException; 
import org.json.JSONObject; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.util.Log; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends Activity { 
TextView tv; 
String textview = null; 
static JSONObject jObj ; 
static String json = ""; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    tv = (TextView) findViewById(R.id.textView1); 
    Button b2 = (Button) findViewById(R.id.button1); 

    b2.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

// TODO Auto-generated method stub 

      Intent i2 = new Intent(MainActivity.this,menuList.class); 
      startActivity(i2); 

     } 

    }); 
    Button connectdb = (Button) findViewById(R.id.button1); 
    connectdb.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
// TODO Auto-generated method stub 
      new Connectingdb().execute(); 
     } 

    }); 
} 

class Connectingdb extends AsyncTask<String, String, JSONObject> { 
    /** 

    * Before starting background thread Show Progress Dialog 

    * */ 

    boolean failure = false; 
    private ProgressDialog pDialog; 

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

    } 
    @Override 
    protected JSONObject doInBackground(String... args) { 
     InputStream is = null; 

// Making HTTP request 

     try { 
// check for request method 

      { 

// request method is POST 

// defaultHttpClient 
       DefaultHttpClient httpClient = new DefaultHttpClient(); 
       HttpPost httpPost = new HttpPost("http://codedefault.base.pk/products.php"); 
       HttpResponse httpResponse =    httpClient.execute(httpPost); 
       HttpEntity httpEntity = httpResponse.getEntity(); 
       is = httpEntity.getContent(); 

      } 
     } catch (UnsupportedEncodingException e) { 

      e.printStackTrace(); 

     } catch (ClientProtocolException e) { 

      e.printStackTrace(); 

     } catch (IOException e) { 

      e.printStackTrace(); 

     } 

     try { 

      BufferedReader reader = new BufferedReader(new InputStreamReader(

        is, "iso-8859-1"), 8); 

      StringBuilder sb = new StringBuilder(); 

      String line = null; 

      while ((line = reader.readLine()) != null) { 

       sb.append(line + "\n"); 

      } 

      json = sb.toString(); 
      jObj = new JSONObject(json); 
      is.close(); 
      return jObj; 
     } catch (Exception e) { 

      Log.e("Buffer Error", "Error converting result " + e.toString()); 
      return null; 

     } 
    } 

    /** 

    * After completing background task Dismiss the progress dialog 

    * **/ 

    protected void onPostExecute(JSONObject json) { 

     try { 
      int mobid = json.getInt("ID"); 
      String mobilename = json.getString("mobileName"); 
      String mobileModel = json.getString("mobileModel"); 
      int mobilePrice = json.getInt("mobileprice"); 

      display("mobile Id= "+mobid+"\nmobileName = "+mobilename +"\n mobile model = "+mobileModel +"\n mobile price = "+mobilePrice+"\n>>>>>>>>>>>>>>>\n"); 


     } catch (JSONException e) { 

// TODO Auto-generated catch block 

      e.printStackTrace(); 

     } 
     pDialog.dismiss(); 
    } 
} 
public void display(String m){ 
    tv.setText(m); 
} 
} 
+0

問題はサーバーで発生しています。 http://stackoverflow.com/questions/32409655/getting-html-response-instead-of-json-in-android –

+0

@ShadabAnsariその答えを読んだ後、私は自分の問題点を理解することができます。さて、クライアント側にクッキーを送信しない無料のWebホスティングサイトを私に提案してください。 –

+0

申し訳ありませんが、わかりません。 –

答えて

0

あなたのフリーサーバに問題があるということは、あなたのオンラインWebサーバが、処理されないアンドロイドにクッ​​キーを送信することを意味します。これで、base.pk、byethost.comよりも別のWebホスティングサイトを使用できるようになりました。これらの問題を解決するには、ueuo.comを使用してください。

+0

ありがとう、それは動作します。 –

0

問題は、サーバーです。 JSON文字列はクライアント側で表示されます。実際のソースコードは、あなたが投稿した単純な文字列とは異なります。 実際の問題をよりよく理解するためにat the source code (sorry for the screenshot)をご覧ください。

関連する問題