1

以下のクラスでは、非同期内部クラス関数 doInBackground を使用してもヒットしません。rpi.excute を呼び出してから、 HTTP でダウンロードされた getQuestionnaireBO を介してデータを取得しようとしているときに、 AndroidManifest.xml およびその他の構成にインターネット アクセス許可があります。

public class RestApiClient {
    private final static String SERVICE_URI = "http://182.50.154.23/Dattab.Device.Rest/ServiceClass/RestDeviceService.svc";
    private QuestionnaireBO resultQuestionnaireBO ;
    public void Questionnairedownload(int QuestionnaireId ) {
        String url=SERVICE_URI+"/DownloadQuestionnaireData/"+QuestionnaireId;
        // InputStream source = retrieveStream(url);
        // Gson gson = new Gson();
        // Reader reader = new InputStreamReader(source);
        // QuestionnaireBO response = gson.fromJson(reader, QuestionnaireBO.class);
        ChildThreadQuestionnairedownload ctqd = new ChildThreadQuestionnairedownload();
        ctqd.execute(url);

        // return null ;        
    }

    public QuestionnaireBO getQuestionnaireBO() {
        return resultQuestionnaireBO;
    }


    private class ChildThreadQuestionnairedownload extends AsyncTask<String,Integer,QuestionnaireBO> {

        @Override
        protected QuestionnaireBO doInBackground(String... params) {
             String url=params[0];
             Gson gson = new Gson();
             DefaultHttpClient client = new DefaultHttpClient();                     
             HttpGet getRequest = new HttpGet(url);
             try {
                 HttpResponse getResponse = client.execute(getRequest);
                 final int statusCode = getResponse.getStatusLine().getStatusCode();

                 if(statusCode != HttpStatus.SC_OK) {
                      Log.w(getClass().getSimpleName(),
                            "Error " + statusCode + " for URL " + url);
                      return null;
                 }

                 HttpEntity getResponseEntity = getResponse.getEntity();
                 Reader reader = new InputStreamReader(getResponseEntity.getContent());
                 QuestionnaireBO response = gson.fromJson(reader, QuestionnaireBO.class);

                  return response ;
             }
             catch(IOException e){
                  e.printStackTrace();
                  return null;
             }

         }

         protected void onPostExecute(QuestionnaireBO response) {
             resultQuestionnaireBO=response;
         }

     }
}
4

1 に答える 1

0

呼ばれない理由doInBackground()が見当たりません。

これはおそらくダンプ 1 ですが... インターネットに接続していることを確認しましたか?
場合によっては、Wi-Fi を使用している場合は接続が失われる可能性があり、3G を使用している場合はすべてのお金を使い果たした可能性があります。だから、インターネットへのアクセスはありません。

于 2012-08-07T07:45:13.647 に答える