2017-07-01 17 views
0

Visual Studioを使用して構築したAPIがあり、実行するとIIS Expressが実行されます。 Android Studioを使用して作成したアンドロイドアプリケーションもあります。 アンドロイドアプリは、APIにアクセスしてJSONレスポンスを返すことを目的としていますが、パーミッション拒否例外が発生します。Android EmulatorへのアクセスIIS Express

java.net.SocketException: Permission denied 

私のアンドロイドのコードは次のとおりです。

public class MainActivity extends AppCompatActivity { 

    Button btnGET; 
    final String API = "http://localhost:1337/Test/b"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     btnGET = (Button) findViewById(R.id.btnGET); 
     btnGET.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       new DoGetTestTable().execute(); 
      } 
     }); 
    } 

    class DoGetTestTable extends AsyncTask<Void, Void, Void>{ 

     @Override 
     protected Void doInBackground(Void... params) { 
      try{ 
       URL url = new URL(API); 
       HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); 
       httpURLConnection.setRequestMethod("GET"); 
       httpURLConnection.connect(); 
       InputStream is = httpURLConnection.getInputStream(); 

       int byteCharacter; 
       String result = ""; 

       while((byteCharacter = is.read()) != -1){ 
        result += (char) byteCharacter; 
       } 

       Log.d("json api", result); 

      } catch (Exception e){ 
       e.printStackTrace(); 
      } 

      return null; 
     } 
    } 
} 

と私のトレースがある:

07-01 22:59:31.736 2429-2846/sentzke.jackson.apitest W/System.err: java.net.SocketException: Permission denied 
07-01 22:59:31.736 2429-2846/sentzke.jackson.apitest W/System.err:  at java.net.Socket.createImpl(Socket.java:454) 
07-01 22:59:31.736 2429-2846/sentzke.jackson.apitest W/System.err:  at java.net.Socket.getImpl(Socket.java:517) 
07-01 22:59:31.736 2429-2846/sentzke.jackson.apitest W/System.err:  at java.net.Socket.setSoTimeout(Socket.java:1108) 
07-01 22:59:31.736 2429-2846/sentzke.jackson.apitest W/System.err:  at com.android.okhttp.Connection.connectSocket(Connection.java:195) 
07-01 22:59:31.737 2429-2846/sentzke.jackson.apitest W/System.err:  at com.android.okhttp.Connection.connect(Connection.java:172) 
07-01 22:59:31.737 2429-2846/sentzke.jackson.apitest W/System.err:  at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:367) 
07-01 22:59:31.737 2429-2846/sentzke.jackson.apitest W/System.err:  at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:130) 
07-01 22:59:31.737 2429-2846/sentzke.jackson.apitest W/System.err:  at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:329) 
07-01 22:59:31.737 2429-2846/sentzke.jackson.apitest W/System.err:  at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:246) 
07-01 22:59:31.737 2429-2846/sentzke.jackson.apitest W/System.err:  at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457) 
07-01 22:59:31.737 2429-2846/sentzke.jackson.apitest W/System.err:  at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:126) 
07-01 22:59:31.737 2429-2846/sentzke.jackson.apitest W/System.err:  at sentzke.jackson.apitest.MainActivity$DoGetTestTable.doInBackground(MainActivity.java:42) 
07-01 22:59:31.738 2429-2846/sentzke.jackson.apitest W/System.err:  at sentzke.jackson.apitest.MainActivity$DoGetTestTable.doInBackground(MainActivity.java:34) 
07-01 22:59:31.738 2429-2846/sentzke.jackson.apitest W/System.err:  at android.os.AsyncTask$2.call(AsyncTask.java:304) 
07-01 22:59:31.738 2429-2846/sentzke.jackson.apitest W/System.err:  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
07-01 22:59:31.738 2429-2846/sentzke.jackson.apitest W/System.err:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 
07-01 22:59:31.739 2429-2846/sentzke.jackson.apitest W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
07-01 22:59:31.739 2429-2846/sentzke.jackson.apitest W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
07-01 22:59:31.739 2429-2846/sentzke.jackson.apitest W/System.err:  at java.lang.Thread.run(Thread.java:761) 

私は10.0.2.2:1337にローカルホストを変更しようとしたが、それは動作しませんでしたどちらか。 提案がありますか?

答えて

0

もちろん、Androidでは10.0.2.2:1337を使用する必要がありますが、ホスト名を「localhost」から「127.0.0.1」に変更するには、IIS Express側でも変更する必要があります。

<binding protocol="http" bindingInformation="*:7265:127.0.0.1" /> 

あなたは私のブログの記事内のすべての詳細を見つけることができ、

https://blog.lextudio.com/how-to-let-android-emulator-access-iis-express-f6530a02b1d3

関連する問題