2012-09-27 8 views
0

웹 서비스 (JSON)를 호출하여 앱에 로그인하려는 사용자를 인증해야합니다. 다음 xml을 제공했습니다Webservices 객체 참조가 객체의 인스턴스로 설정되지 않았습니다.

<summary> 
    http://geniewebsvc.cloudapp.net/Member.svc/Authenticate 
</summary> 
    <param name="payload"> 
    {"UserName":"[email protected]","Password":"[email protected]$$w0rd"} 
    </param> 
    <requiredHeaders> 
    Content-Type: application/json;charset=UTF-8 
    </requiredHeaders> 
    <returns></returns> 
    [OperationContract] 
    [WebInvoke(UriTemplate = "/Authenticate", Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)] 
    AuthenticateResponse Authenticate(AuthCredentials usernamePassword); 

사용자 ID가 이미 등록되어 있고 Get 메서드인지 확인하는 비슷한 방법이 있습니다. 그건 잘 작동하고 성공과 실패 사례 모두에 대한 적절한 응답을받을 수 있습니다. 그러나 모든 포스트 방법은 저에게 문제를 일으키는 방법입니다. 그리고 난 .. 즉, (가) 있습니다 .. isregistered 웹 서비스의 PARAM 태그가 이런 식입니다 ..이 XMLS에서 또 하나 개의 차이가 있음을

<param name="emailAddress"></param> 

을 발견하고 여기에 내 GET()과 후() 주시기 바랍니다 내 실수 ...

public void Post() 
    { 
     RequestState myRequestState = new RequestState(); 
     try 
     { 
      System.Uri uri = new Uri(url); 
      HttpWebRequest myHttpWebGetRequest; 
      Logger.log(TAG, "Create a HttpWebrequest object to the URL", url); 
      myHttpWebGetRequest = (HttpWebRequest)WebRequest.Create(uri); 
      _mHttpWebRequest = myHttpWebGetRequest; 
      myRequestState.conn = this; 
      myRequestState.request = myHttpWebGetRequest; 
      myRequestState.request.ContentType = "application/json;charset=UTF-8"; 

      myRequestState.request.Method = "POST"; 
      myRequestState.request.AllowReadStreamBuffering = false; 
      myRequestState.request.Headers["UserName"] = "[email protected]"; 
      myRequestState.request.Headers["Password"] = "125124514"; 
      // myRequestState.request.Headers["MemberId"] = "UdE8IwmTbxEjmzmMo2nBpg=="; 

      IAsyncResult result = (IAsyncResult)myHttpWebGetRequest.BeginGetResponse(new AsyncCallback(RespCallback), myRequestState); 
     } 
     catch (Exception e) 
     { 
      close(myRequestState); 
      if (this.listener != null) 
      { 
       Logger.log(TAG, "post()", e.Message); 
      } 
     } 
    } 

public void Get() 
    { 
     RequestState myRequestState = new RequestState(); 
     try 
     { 
      System.Uri uri = new Uri(url); 
      HttpWebRequest myHttpWebPostRequest; 
      Logger.log(TAG, "Create a HttpWebrequest object to the URL", url); 
      myHttpWebPostRequest = (HttpWebRequest)WebRequest.Create(uri); 
      _mHttpWebRequest = myHttpWebPostRequest; 
      myRequestState.conn = this; 
      myRequestState.request = myHttpWebPostRequest; 
      myRequestState.request.Method = "GET"; 
      myRequestState.request.AllowReadStreamBuffering = false; 

      IAsyncResult result = (IAsyncResult)myHttpWebPostRequest.BeginGetResponse(new AsyncCallback(RespCallback), myRequestState); 
     } 
     catch (Exception e) 
     { 
      close(myRequestState); 
      if (this.listener != null) 
      { 
       Logger.log(TAG, "get()", e.Message); 
      } 
     } 
    } 

내가 뭔가 잘못하고 오전 ??? 모든 일이 나에게 아주 아주 새로운 뭐죠 나 .. 내가 잘못 도움이 필요합니다 ..

감사합니다 :)

답변

0
을 알고

나는 조금 w를 연주했다. 귀하의 코드가 있지만 그것을 만들 수 없습니다 : (

POST() 메서드 및 GET() 메서드에 사용하는 URL은 무엇입니까?

그런데 다른 방법으로 서비스를 호출 할 수 있습니다. 다음 단계를 따르십시오.

- 새 프로젝트를 만듭니다.
- 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하고 "서비스 참조 추가"를 클릭 한 다음 주소를 "http://geniewebsvc.cloudapp.net/Member.svc"로 제공하고 이동을 클릭하십시오.
- 서비스 정보가 다운로드되면 "MyMemberService"와 같은 네임 스페이스를 제공하고 확인을 클릭하십시오.

그런 다음 MainPage.xaml.cs로 이동하여 다음 코드를 작성하십시오.

MemberServiceClient client = new MemberServiceClient(); 
client.AuthenticateCompleted += new EventHandler<AuthenticateCompletedEventArgs>(client_AuthenticateCompleted); 
client.AuthenticateAsync(new AuthCredentials() { UserName = "[email protected]", Password = "125124514" }); 

그리고 AuthenticateCompleted 핸들러는

void client_AuthenticateCompleted(object sender, AuthenticateCompletedEventArgs e) 
{ 
    MessageBox.Show(e.Result.Successful.ToString()); 
} 

당신은 단순히 코드의 단지 2 또는 3 선으로 MemberService에서 모든 서비스를 호출 할 수 있습니다이 방법입니다. 비누 클라이언트가 Visual Studio 프로젝트에서 호출되는 방법입니다.

하지만 여기에도 해결해야 할 "끝점 구성"문제가 있습니다. 그리고 그렇게 할 수 있다면 개발 시간의 30 ~ 40 %를 절약 할 수 있습니다.

행운을 빈다.

관련 문제