2016-08-25 2 views
0

サービスコールのための非同期タスクを使用しています。このサービスは私が呼び出してjsonデータを取得する必要があるサードパーティ製で、私はこのコードを使用するために他のもののために移動する必要があります。MalformedURLException :?

private class FetchJsonData extends AsyncTask<Void, Void, String> { 

    @Override 
    protected String doInBackground(Void... params) { 
     // These two need to be declared outside the try/catch 
     // so that they can be closed in the finally block. 
     HttpURLConnection urlConnection = null; 
     BufferedReader reader = null; 

     // Will contain the raw JSON response as a string. 
     String forecastJsonStr = null; 

     try { 
      // Construct the URL for the OpenWeatherMap query 
      // Possible parameters are avaiable at OWM's forecast API page, at 
      // http://openweathermap.org/API#forecast 


      URL url = new URL("android-app://ir.com.irremote.ir.com.irremote.activity/http/" + "api.abc.com/TVlistings/v9/listings/services/postalcode/37215/info?locale=en-US&countrycode=US&format=json&apikey=abc"); 
      urlConnection = (HttpURLConnection) url.openConnection(); 
      // Create the request to OpenWeatherMap, and open the connection 
      urlConnection.setRequestMethod("GET"); 
      urlConnection.connect(); 
      urlConnection.setDoOutput(true); 
      urlConnection.setDoInput(true); 
      // Read the input stream into a String 
      InputStream inputStream = urlConnection.getInputStream(); 
      StringBuffer buffer = new StringBuffer(); 
      if (inputStream == null) { 
       // Nothing to do. 
       return null; 
      } 
      reader = new BufferedReader(new InputStreamReader(inputStream)); 

      String line; 
      while ((line = reader.readLine()) != null) { 
       // Since it's JSON, adding a newline isn't necessary (it won't affect parsing) 
       // But it does make debugging a *lot* easier if you print out the completed 
       // buffer for debugging. 
       buffer.append(line + "\n"); 
      } 

      if (buffer.length() == 0) { 
       // Stream was empty. No point in parsing. 
       return null; 
      } 
      forecastJsonStr = buffer.toString(); 
      return forecastJsonStr; 
     } catch (IOException e) { 
      Log.e("PlaceholderFragment", "Error ", e); 
      // If the code didn't successfully get the weather data, there's no point in attemping 
      // to parse it. 
      return null; 
     } finally { 
      if (urlConnection != null) { 
       urlConnection.disconnect(); 
      } 
      if (reader != null) { 
       try { 
        reader.close(); 
       } catch (final IOException e) { 
        Log.e("PlaceholderFragment", "Error closing stream", e); 
       } 
      } 
     } 
    } 

    @Override 
    protected void onPostExecute(String s) { 
     super.onPostExecute(s); 

     Log.i("json", "" + s); 
    } 
} 

その後、私は(のonCreateにexcute)が、それは、ここでログイン置く.I来る理由を私は知らない私にいくつかの例外を与え、この参照してください。

致命的な例外:メイン プロセスを:ir.dumadu.com.irremote、PID:20759 java.lang.RuntimeException:アクティビティを停止できません{ir.dumadu.com.irremote/ir.dumadu.com.irremote.ir.dumadu.com.irremote.activity。 ChoseTransmitter}:java.lang.IllegalArgumentException:AppIndex:URIホストはパッケージ名と一致し、形式(android-app://// [host_path])に従わなければなりません。提供されたURI:android.app.ActivityThread.handleSleeping(ActivityThread.java:4679) android.app.ActivityThread.access $ 3400(ActivityThread.java:211)android.os.Handler.dispatchMessage(Handler.java:102)の とandroid.app.ActivityThread $ H.handleMessage(ActivityThread.java:1934) android.os.Looper.loop(Looper.java:145) android.app.ActivityThread.main(ActivityThread.java:6946) at java.lang.reflect.Method.invoke(ネイティブメソッド) at java。 lang.reflect.Method.invoke(Method.java:372)com.android.internal.os.ZygoteInitで$ MethodAndArgsCaller.run(ZygoteInit.java:1404) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) で発生:java.lang。 IllegalArgumentException:AppIndex:URIホストはパッケージ名と一致し、形式(android-app://// [host_path])に従わなければなりません。提供されたURI:android-app://ir.dumadu.com.irremote.ir.dumadu.com.irremote.activity/http/host/path at com.google.android.gms.internal.zzju.zzb(不明な情報源) com.google.android.gms.internal.zzju.zza(不明な情報源) com.google.android.gms.internal.zzjt.zza(不明な情報源) com.google.android.gms.internal .zzju.zza(不明な情報源) com.google.android.gms.internal.zzju.end(不明な情報源) at ir.dumadu.com.irremote.ir.dumadu.com.irremote.activity.ChoseTransmitter.onStop (ChoseTransmitter.java:169) android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1305) at andro idroid.app.Activity.performStop(Activity.java:6777)android.app.ActivityThread.handleSleeping(ActivityThread.java:4676)の android.app.ActivityThread.accessの $ 3400(ActivityThread.java:211) at android .app.ActivityThread $ H.handleMessage(ActivityThread.java:1934) とandroid.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:145) でandroid .app.ActivityThread.main(ActivityThread.java:6946) at java.lang.reflect.Method.invoke(ネイティブメソッド)

ここで私はこのURLを使用していますyバックエンドURL。このURLは私たちにいくつかのサービスプロバイダーを与えました.WebブラウザでこのURLをヒットしたら、私はjson形式のデータを与えました。私はモバイルアプリケーションを呼び出すとlog.ifよりも上にあるので、あなたが私に間違いなく答える何らかの方法をしてください。ありがとうございます。

+0

有効なURLを文字列として追加する必要があります。例:URL url =新しいURL( "http://fb.com/"); –

+0

今私は解決策を得ました:まず、特定のURLに文字列変数を作成する必要があります。好き。 String urlStr = "http://whatever.com"; URL url =新しいURL(urlStr);それでは仕事 – user6615010

答えて

0
private class FetchJsonData extends AsyncTask<Void, Void, String> { 

    @Override 
    protected String doInBackground(Void... params) { 
     // These two need to be declared outside the try/catch 
     // so that they can be closed in the finally block. 
     HttpURLConnection urlConnection = null; 
     BufferedReader reader = null; 

     // Will contain the raw JSON response as a string. 
     String forecastJsonStr = null; 

     try { 
      // Construct the URL for the OpenWeatherMap query 
      // Possible parameters are avaiable at OWM's forecast API page, at 


      String urls="http://" + "api.abc.com/TVlistings/v9/listings/services/postalcode/37215/info?locale=en-US&countrycode=US&format=json&apikey=abc"; 
      URL url = new URL(urls); 
      urlConnection = (HttpURLConnection) url.openConnection(); 
      // Create the request to OpenWeatherMap, and open the connection 
      urlConnection.setRequestMethod("GET"); 
      urlConnection.connect(); 
      //urlConnection.setDoOutput(true); 
      //urlConnection.setDoInput(true); 
      // Read the input stream into a String 
      InputStream inputStream = urlConnection.getInputStream(); 
      StringBuffer buffer = new StringBuffer(); 
      if (inputStream == null) { 
       // Nothing to do. 
       return null; 
      } 
      reader = new BufferedReader(new InputStreamReader(inputStream)); 

      String line; 
      while ((line = reader.readLine()) != null) { 
       // Since it's JSON, adding a newline isn't necessary (it won't affect parsing) 
       // But it does make debugging a *lot* easier if you print out the completed 
       // buffer for debugging. 
       buffer.append(line + "\n"); 
      } 

      if (buffer.length() == 0) { 
       // Stream was empty. No point in parsing. 
       return null; 
      } 
      forecastJsonStr = buffer.toString(); 
      return forecastJsonStr; 
     } catch (IOException e) { 
      Log.e("PlaceholderFragment", "Error ", e); 
      // If the code didn't successfully get the weather data, there's no point in attemping 
      // to parse it. 
      return null; 
     } finally { 
      if (urlConnection != null) { 
       urlConnection.disconnect(); 
      } 
      if (reader != null) { 
       try { 
        reader.close(); 
       } catch (final IOException e) { 
        Log.e("PlaceholderFragment", "Error closing stream", e); 
       } 
      } 
     } 
    } 

    @Override 
    protected void onPostExecute(String s) { 
     super.onPostExecute(s); 

     Log.i("json", "" + s); 
    } 
} 

今では仕事です。

+1

あなたはあなたが行った変更とその問題をどのように修正するのかを説明に含めて、OPや他の人がより明確な画像を得るようにしてもよい。また、コードを含めるときには、答えに関連する行だけを含めるだけで十分です。 – Shaishav

+0

@Shaishav私は既に何が変わったのかについて質問しています。 – user6615010

+0

クールな...私は答えの説明だけを答えを含めて示唆したいと思います。 – Shaishav

関連する問題