2012-03-25 3 views
1

.Net WCF HTTP 서비스가 작동합니다. URL을 I.E, FireFox 또는 Google Chrome 브라우저에 넣으면 올바른 스트림이 반환됩니다. 하지만 안드로이드 애플 리케이션 (Eclipse에서 실행)에서 동일한 서비스에 액세스하려고하면 "Permission Denied"라는 세부 메시지와 함께 socketException이 발생합니다. 서비스는 Visual Studio 웹 호스팅 업체의 내 컴퓨터에서 실행되며 클라이언트는 내 컴퓨터의 Android 에뮬레이터에서 실행됩니다.Android에서 작동하는 HTTPService에 액세스하는 데 문제가 있습니다.

예외가 발생하는 행은 다음과 같습니다. InputStream in = new BufferedInputStream (urlConnection.getInputStream());

(I URL이 www.android.com과 내가 "잘못된 URL"을 얻고있다이 같은 프로그램에 이전 포스트가)

브라우저는 아무 문제가없는 사람이 왜 단서가있을 수도 있습니다 android 클라이언트가 권한을 거부하고 있습니까? 감사, 게리

 HttpURLConnection urlConnection = null; 

     try 
     { 
      URL url = new URL("http://localhost:8080/TeamTask/Tasks"); 
      urlConnection = (HttpURLConnection) url.openConnection(); 
      InputStream in = new BufferedInputStream(urlConnection.getInputStream());  
      readStream(in); 
     } 
     catch (MalformedURLException e) 
     { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 

답변

3

가장 가능성이 당신의 AndroidManifest.xml 파일의 권한을하지 않기 때문에 발생합니다 거부 사용 권한.

또한 내가 테스트하지는 않았지만 "localhost"를 사용하는 것이 에뮬레이터에서 실행 중이므로 VM 호스트가 localhost를 사용하여 VM을 실행하고 있기 때문에 시작하지 않을 것이라고 생각합니다. 호스트 컴퓨터가 아닌 컴퓨터의 IP 주소를 입력하십시오. 현재 동일한 네트워크에있는 다른 컴퓨터에서 일부 Android HTTP 호출을 테스트하고 있으며 서버의 로컬 IP를 입력하기 만합니다.

편집 :

public String getURLcontents(URL url) throws IOException{ 
    String response = "failed"; 
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 
    Log.v(TAG, "Opening connection: " + url.toString()); 
    try { 
     InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 
     response = new Scanner(in).useDelimiter("\\A").next(); 
    } 
    catch (Exception e) { 
     urlConnection.disconnect(); 
     return response = "failed"; 
    } 
    finally { 
     urlConnection.disconnect(); 
     Log.v(TAG, "Closed connection"); 
    } 
    return response; 
} 
+0

TomJ, 대답을 주셔서 감사합니다 :

마지막으로, 여기에 내가 간단한 HTTP 호출을 위해 정기적으로 사용하는 몇 가지 노력이 필요한 코드입니다. 이제 스트림을 읽을 수있게되었습니다. –

+0

흥미롭고 재미있는 부작용 : * test * 프로젝트에서 HttpUrlConnection을 사용하는 경우 기본 프로젝트가 HttpUrlConnection 호출을 실행하지 않을지라도 * main * 프로젝트에 android.permission.INTERNET이 있어야합니다. . –

관련 문제