2016-10-23 4 views
0

IはANDROID&PHP - PHP

send_data.php

<?php 
include 'dbconfig.php'; 
$con = new mysqli($servername, $username, $password, $dbname); 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    $query = "select id,ask from pertanyaan"; 

    $result = mysqli_query($con,$query); 

    $rows = array(); 
    while($r = mysqli_fetch_array($result)) { 
    $rows[] =$r; 
    } 
echo json_encode(array_values($rows)); 

    mysqli_close($con); 
?> 

の下JSONArrayにテーブルの値を表示し、JSONArray出力this

ようなものであるに使用するコードを使用してMySQLからJSONArrayを表示する方法

[{"0":"1","id":"1","1":"pertanyaan ke 1","ask":"pertanyaan ke 1"},{"0":"2","id":"2","1":"pertanyaan ke 2","ask":"pertanyaan ke 2"},{"0":"3","id":"3","1":"pertanyaan ke 3","ask":"pertanyaan ke 3"},{"0":"4","id":"4","1":"pertanyaan ke 4","ask":"pertanyaan ke 4"},{"0":"5","id":"5","1":"pertanyaan ke 5","ask":"pertanyaan ke 5"}]

ただし、アンドロイドに表示するURLで、私は

Value <html><body<>script of type java.lang.String cannot be converted to JSONArray

言うエラーが発生しましたが、私は新しいAndroidスタジオに同じ出力hereとAPI、その作業罰金、

を作成するとき、私は間違ったコードを使用しましたPHPからJSONをエンコードするには?

+0

どのようにAndroidの中でURLにアクセスしていますか?あなたのアプリのWebView?ブラウザアプリを通して? –

+0

@MikeM。ああ、私は既にルールを破って申し訳ありません、私はちょうどPHPのコードについての新しい質問をすることを提案しました @FredericKlein 'TextView' sirにすべての値を表示しようとしました – Flix

+0

http://zxccvvv.cuccfree.com/send_data .phpは 'http:// www.'にリダイレクトするにはJavaScriptが必要です。あなたのリクエストに' http:// www.zxccvvv.cuccfree.com/send_data.php'で試してみてください。 –

答えて

1

問題

HttpURLConnectionには、JavaScriptのサポートはありませんが、必要なクッキーはJavaScriptを使用して生成されます。クッキー__testが欠落しているため

あなたのコール

String reqUrl = "http://zxccvvv.cuccfree.com/send_data.php"; 
URL url = new URL(reqUrl); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 

は、失敗します。

JavaScriptソースで一見から修正

クッキーは、与えられたURLに対して一定であるように思われるので、一定のクッキーのために設定するために十分であるかもしれない:

String cookie = "__test=2bf7c15501c0ec57f8e41cb84871a69c"; 

URL url = new URL(reqUrl); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
conn.setConnectTimeout(7000); 
conn.setRequestMethod("GET"); 
conn.setRequestProperty("Cookie", cookie); 

代替: WebViewを使用すると、Cookieを取得できます。これは、Cookieが変更され、多くの時間遅延がない場合に破損しないため、好ましい方法です。

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

    getCookie(); 

    if(cookie!=null) { 
     new GetContacts().execute(); 
    } 
} 

private void getCookie(){ 
    CookieManager.setAcceptFileSchemeCookies(true); 
    WebView wv = new WebView(getApplicationContext()); 
    wv.getSettings().setJavaScriptEnabled(true); 
    wv.loadUrl(url); 
    cookie = CookieManager.getInstance().getCookie("zxccvvv.cuccfree.com"); 
} 

と上記の例のように設定します。

conn.setRequestProperty("Cookie", cookie); 

logcatで出力

Response from url: [{"0":"1","id":"1","1":"pertanyaan ke 1","ask":"pertanyaan ke 1"},{"0":"2","id":"2","1":"pertanyaan ke 2","ask":"pertanyaan ke 2"},{"0":"3","id":"3","1":"pertanyaan ke 3","ask":"pertanyaan ke 3"},{"0":"4","id":"4","1":"pertanyaan ke 4","ask":"pertanyaan ke 4"},{"0":"5","id":"5","1":"pertanyaan ke 5","ask":"pertanyaan ke 5"}] 
+0

遅い応答のため申し訳ありませんが、私はまだ答えがあなたの上に何を意味するのかわかりません 私はアンドロイドスタジオにコードを試してください? – Flix

+0

はい、私はAndroidデバイス上でテストしました。ブースは仕事に近づきますが、私はWebViewのアプローチを好むでしょう。 –

+0

だから私はちょうどホスティングかアンドロイドサーとの間でjavascriptを有効にする必要がありますか? – Flix