2012-10-05 2 views
1

다음은 WCF 서비스에 연결하는 코드 단편입니다.안드로이드와 함께 WCF Rest Service를 사용하는 방법

DefaultHttpClient client = new DefaultHttpClient();   
          HttpGet request = new HttpGet(EMPLOYEE_LOG_IN); 
          request.setHeader("Accept", "application/json"); 
          request.setHeader("Content-type", "application/json");   
          HttpResponse response = client.execute(request); 
          HttpEntity entity = response.getEntity(); 
          if(entity.getContentLength() != 0) { 
           Reader employeeReader = new InputStreamReader(response.getEntity().getContent());  
               //create a buffer to fill if from reader    
               char[] buffer = new char[(int) response.getEntity().getContentLength()];   
               //fill the buffer by the help of reader   
               employeeReader.read(buffer);     
               //close the reader streams    
               employeeReader.close(); 
               //for the employee json object    
               JSONObject employee = new JSONObject(new String(buffer)); 
               Log.d("Response",employee.getString("FirstName"));  

다른 상황에서는 다른 방식으로 동작합니다. 여기 내가이 방법은 모든 것이 잘 작동 호출 할 때 내 방법을 편집하고이

FineReceiptsTestEntities _entity = new FineReceiptsTestEntities(); 

     var t = _entity.Employees.FirstOrDefault(x => x.EmployeeID == personalNUmber); 
     return new Controller 
        { 

         EmployeeId = 1, 
         FirstName = t != null ? t.Name : " ", 
         LastName = "LastName" 
        }; 
같은 엔티티 DB에 연결했을 때

public Controller GetEmployees(int personalNUmber) 
     {     

       return new Controller 
          { 
           EmployeeId = 1, 
           FirstName = "FirstName", 
           LastName = "LastName" 
          };  
      } 
     } 

그래서, 내가 잘 JSON 형식을 얻을 수 있지만, 내 WCF 서비스에서 코드

Json 개체가 반환되지 않았습니다. 이

서버와 같은 오류 반환 단지 HTML 내용이 request.Please을 처리 오류가 서비스에 유효한 요청을 구성하기위한 서비스 도움말 페이지를 참조가 발생했습니다.

브라우저의 두 가지 유형의 메소드가 모두 올바르게 작동하고 관련 데이터를 반환합니다.

여기 내 의 Web.config입니다

<configuration> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     </assemblies> 
    </compilation> 
    </system.web> 
    <system.serviceModel> 
    <standardEndpoints> 
     <webHttpEndpoint> 
     <standardEndpoint helpEnabled="true" automaticFormatSelectionEnabled="true" /> 
     </webHttpEndpoint> 
    </standardEndpoints> 
    <services> 
     <service name="dev_FineReceiptsService.ControllersInfo"> 
     <endpoint kind="webHttpEndpoint" contract="dev_FineReceiptsService.IControllersInfo" /> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
     </service> 
    </services> 
    </system.serviceModel> 
    <connectionStrings> 
    <add name="FineReceiptsTestEntities" connectionString="metadata=res://*/FineTest.csdl|res://*/FineTest.ssdl|res://*/FineTest.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=msdev01;Initial Catalog=FineReceiptsTest;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
</configuration> 

데이터를 검색하는 엔티티를 사용하는 경우 그래서 사람이 문제가 무엇인지 말해 줄 수?

+0

나는이 예 http://wyousuf.wordpress.com/2012/03/01/android-with-wcf-services/#comment-119을 사용하고 잘 작동하지만 난 엔티티를 사용하여 데이터를 검색 할 때 프레임 워크가 작동하지 않습니다. 안드로이드에서 엔티티 프레임 워크를 사용하여 데이터를 검색하는 방법에 대한 도움말을 제공하십시오. –

답변

0

게시물에 원인을 파악하는 데 필요한 정보가 충분하지 않습니다. 누구에게나 도움이 될 RAW HTTP 응답을 게시해야합니다. 요청을 올바르게 구성하지 않아서 서버가 HTTP 415를 반환하고 있습니다.

request.setHeader("Content-type", "application/json");   

GET 요청의 경우 콘텐츠 유형을 json으로 설정합니다. 그건 불가능합니다. 서버가이 서버를 사용하여 혼동을 일으킬 수 있습니다. 서버가 요청으로부터의 진짜 HTTP 500 오류를 가지고있을 수도 있습니다. 응답 오류가 생성되는 방식에서 서비스는 요청 자체가 유효하지 않다는 불평을하는 것 같습니다.

server encountered an error processing the request.Please see the service help page for constructing valid requests to the service.