-1

サービスを呼び出すためのメソッドを作成し、AndroidアプリケーションでJSONデータを取得しようとしています。必要なすべてのgloable変数がすでに宣言されていると仮定します...

これらは、使用しているlibimです。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

これが私のコードです:

public class JSONParser {

String url = "http://gdata.youtube.com/feeds/api/users/eon/uploads?&v=2&max-   results=50&alt=jsonc"; 

JSONObject jObj = null;
JSONArray ja = null;
String json = "";

// constructor
public JSONParser() {

 }



  public JSONObject getJSONFromUrl(String url){
    try {
          URL urlGetter = new URL(url);
        URLConnection tc = urlGetter.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(
                tc.getInputStream(), "iso-8859-1"), 8);

          StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = in.readLine()) != null) {
            sb.append(line + "\n");
        }


         json = sb.toString();
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

      //parse the string to a JSON object
    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }
    return jObj;
   }

それはうまくいきません、私はそれがこの行まで実行されたときにデバッグモードで実行しようとしました:

BufferedReader in = new BufferedReader(new InputStreamReader(
            tc.getInputStream(), "iso-8859-1"), 8);

それは文句を言います:java.net.UnknownHostException:gdata.youtube.com私はこの問題を解決する方法がわかりません...何か提案はありますか?ありがとう

ちなみに、私のアンドロイドマニフェストでは、私はすでにインターネットを許可しています:

ブラウザでURLを検索すると、tiのjson形式が表示されます...接続できます...しかし、私のコードはunknowhostexceptionについて文句を言っています... "http://gdata.youtube.com/ feeds / api / users / eon / uploads?&v = 2&max- results = 50&alt = jsonc ";

4

2 に答える 2

3

androidManifest.xmlに権限を入力してください

<uses-permission android:name="android.permission.INTERNET"/>
于 2012-09-06T13:32:19.047 に答える
0

urlEncoderを使用して URL をエンコードする必要があると思います。URL には %20 に置き換える必要があるスペースが含まれているため、https: //stackoverflow.com/a/3286128/1434631 を確認してください。

于 2012-09-06T13:17:15.783 に答える