0

私は LAN.proxy でサーバーに参加しているコンピューターで作業しています。コンピューターでインターネットにアクセスするためにプロキシが使用されています。現在、JSON を出力として提供する PHP Web サービスを使用するプロジェクトを行っています。空白の応答、プロキシが原因であると言うスタック オーバーフローの質問の回答の 1 つを読みました。アプリケーションでプロキシ設定を設定する必要がありますか。そして、この問題のプロキシを設定するにはどうすればよいですか。

この手順でプロキシを設定しました

  1. メニューをクリック
  2. 設定をクリックします
  3. ワイヤレスとネットワークをクリックします
  4. モバイルネットワークに移動
  5. アクセスポイント名に移動
  6. ここで Telkila Internet をクリックします。
  7. [アクセス ポイントの編集] セクションで、「プロキシ」と「ポート」を入力します。
  8. ユーザー名とパスワードも入力します。残りのフィールドは空白のままにします

インターネットはエミュレータで動作していますが、プロジェクトには何も表示されません。これは私のコードです

package com.example.jsonexaple2;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import org.apache.http.util.ByteArrayBuffer;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

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

public class Jsonexaple2 extends Activity {
    String archiveQuery = "http://www.archive.org/advancedsearch.php?q=Lotus&fl[]=date&fl[]=format&fl[]=identifier&fl[]=mediatype&fl[]=title&sort[]=createdate+desc&sort[]=&sort[]=&rows=10&page=1&output=json&callback=callback&save=yes";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.jsonexaple2);
        InputStream in = null;
        String queryResult = "";
        try {
         URL url = new URL(archiveQuery);
         HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
         HttpURLConnection httpConn = (HttpURLConnection) urlConn;
         httpConn.setAllowUserInteraction(false);
         httpConn.connect();
         in = httpConn.getInputStream();
         BufferedInputStream bis = new BufferedInputStream(in);
         ByteArrayBuffer baf = new ByteArrayBuffer(50);
         int read = 0;
         int bufSize = 512;
         byte[] buffer = new byte[bufSize];
         while(true){
          read = bis.read(buffer);
          if(read==-1){
           break;
          }
          baf.append(buffer, 0, read);
         }
         queryResult = new String(baf.toByteArray());
        } catch (MalformedURLException e) {
         // DEBUG
         Log.e("DEBUG: ", e.toString());
        } catch (IOException e) {
         // DEBUG
         Log.e("DEBUG: ", e.toString());
        }
        JSONObject jObject;
        try {
         jObject = new JSONObject(queryResult.replace("callback(", "")).getJSONObject("response");
         JSONArray docsArray = jObject.getJSONArray("docs");
         for (int i = 0; i < 10; i++) {
          if (docsArray.getJSONObject(i).optString("mediatype").equals("etree")) {
           String title = docsArray.getJSONObject(i).optString("title");
           String identifier = docsArray.getJSONObject(i).optString("identifier");
           String date = docsArray.getJSONObject(i).optString("date");
           System.out.println(title + " " + identifier + " " + date);
          }
         }
        } catch (JSONException e) {
         // DEBUG
         Log.e("DEBUG: ", e.toString());
        }
    }

}
4

1 に答える 1

0

はい、そうしなければなりません。かつて、エミュレーターで同じ問題が発生しました。Google で検索したところ、素敵な 2 つのブログが見つかりました。

それがあなたを助けることを願っています。

于 2012-08-22T08:29:34.197 に答える