0

次のコードは、PHP ファイルのこのコードから「バドミントン協会」である PHP ファイルの出力を受信して​​いません。

print(json_encode($row['Description']));

誰かが間違いを見つけることができれば素晴らしいことです。'result' と 'is' はどちらも空の変数です。

public class BackgroundAsyncTask extends AsyncTask<Void, String, Void> {

  protected Void doInBackground(Void... params) {
    //http post
    try{
      HttpClient client = new DefaultHttpClient();  
      HttpGet get = new HttpGet("http://ntusocities.host22.com/post.php");
      HttpResponse response = client.execute(get);  
      HttpEntity entity = response.getEntity();
      is = entity.getContent();
    } catch(Exception e){
      Log.e("log_tag", "Error in http connection "+e.toString());
    }
    //convert response to string
    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");
      }

      is.close();

      result=sb.toString();
    } catch(Exception e){
      Log.e("log_tag", "Error converting result "+e.toString());
    }

    //parse json data
    try {
      JSONObject userObject = new JSONObject(result);
      info = userObject.getString("Description");
    }
    catch(Exception ex){
    }   
    return null;
  }
}

どうもありがとう!

4

3 に答える 3

1

URLは文字列をhttp://ntusocities.host22.com/post.php返しbadminton societyます。これは有効な JSON ではないため、JSON の解析が失敗しても不思議ではありません。有効な JSON を返すようにサーバー側を修正する必要があります。

JSON とは -> http://en.wikipedia.org/wiki/JSON

JSONが有効かどうかを確認するには? -> http://jsonlint.com/

また、応答を文字列として取得する非常に簡単な方法があります: https://stackoverflow.com/a/4480517/247013

于 2013-04-10T18:59:36.977 に答える
0

さて、URLからの出力は次のとおりです。

"badminton society"
<!-- Hosting24 Analytics Code -->
<script type="text/javascript" src="http://stats.hosting24.com/count.php"></script>
<!-- End Of Analytics Code -->

Arhimend が既に述べたように、JSON ではないことを意味します。しかし、これで有効な InputStream を取得できなくなるわけではありません。これを試して:

protected Void doInBackground(Void... params) {
//http post
try{
  is = new java.net.URL("http://ntusocities.host22.com/post.php").openStream();
} catch(Exception e){
  Log.e("log_tag", "Error in http connection ", e);
}
...

とにかく、コードは次の場所で解析に失敗します

 JSONObject userObject = new JSONObject(result);

「結果」は JSON ではないためです。

于 2013-04-10T19:26:42.833 に答える
0

AndroidManifest.xml に権限を追加しましたか

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

あなたが言及したリンク、データを提供します

{"info":[{"SocietyID":"SOC003","Name":"Badminton","Type":"Sport","President":"Me","VicePresident":"You","ContactEmail":"me@gmail.com","Description":"badminton society"}]}<!-- some data-->

Just remove, '[' and ']' and "<!-- some data-->" from your response. I think the "some data part    is comment.

他のすべては問題ありません。

次に、このコードを試して値を取得し、

JSONObject userObject;
try {
userObject = new JSONObject(content);
JSONObject info = userObject.getJSONObject("info");
String name = info.getString("Name");
String type = info.getString("Type");
String description = info.getString("Description");
    // like this fetch all value/fields

Log.i("JOSN", name +", "+ type +", "+ description);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

ではごきげんよう !

于 2013-04-10T17:14:42.143 に答える