0

私はアンドロイドが初めてで、コードの理解が非常に限られています。インターネット上の API から xml データを返そうとしています。これについていくつかのエントリを読みましたが、どれも機能していないようで、コードの説明がほとんどないため、あまり変更することはできません.

どこが間違っているのか説明して、何を変更する必要があるかについて少し説明してもらえますか?

乾杯

package com.example.testingXML;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.entity.BufferedHttpEntity;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class Main extends Activity {
  /** Called when the activity is first created. */

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    try {
      HttpClient httpclient = new DefaultHttpClient();
      HttpGet httpget = new HttpGet();
      httpget.setURI(new URI("http://api.inapub.co.uk/venues/postcode/bn23fe/1/?API_Key=7xa3tdmjkhu6jwjvp746zgg4"));


      HttpResponse response = httpclient.execute(httpget);
      HttpEntity ht = response.getEntity();

      BufferedHttpEntity buf = new BufferedHttpEntity(ht);

      InputStream is = buf.getContent();

      BufferedReader r = new BufferedReader(new InputStreamReader(is));

      StringBuilder total = new StringBuilder();
      String line;
      String NL = System.getProperty("line.separator");
      while((line = r.readLine()) != null){
        total.append(line + NL);
      }

      r.close();
      String page = r.toString();

    } catch (ClientProtocolException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } catch (URISyntaxException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}
4

1 に答える 1

1

2つのこと:

1) 別のスレッドを使用して HTTP フェッチを行ってください。参照: http://developer.android.com/reference/android/os/AsyncTask.html

2) アプリケーションがインターネット許可を要求していることを確認してください

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

3) これを行う最も簡単な方法は、URLConnection を使用することです。

URLConnection conn = new URL("http://api.inapub.co.uk/venues/postcode [etc...]").OpenConnection(); 
于 2012-05-09T03:16:16.093 に答える