2011-03-12 6 views
7

사용자를 업데이트하는 메소드 (PUT)를 작성한 WCF에 REST 서비스를 작성했습니다. 이 방법을 위해 나는 단지 하나 개의 매개 변수가있는 경우 나 사용자 클래스의 XML 엔티티를 통과 할 수 있지만 여러 신체 매개 변수webinvoke 메서드 (Post 또는 PUT)를 사용하여 wcf에서 여러 body 매개 변수를 전달하는 방법

[WebInvoke(Method = "PUT", UriTemplate = "users/user",BodyStyle=WebMessageBodyStyle.WrappedRequest)] 
[OperationContract] 
public bool UpdateUserAccount(User user,int friendUserID) 
{ 
    //do something 
    return restult; 
} 

을 통과해야합니다. 다음과 같이 :

var myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); 
myRequest.Method = "PUT"; 
myRequest.ContentType = "application/xml"; 
byte[] data = Encoding.UTF8.GetBytes(postData); 
myRequest.ContentLength = data.Length; 
//add the data to be posted in the request stream 
var requestStream = myRequest.GetRequestStream(); 
requestStream.Write(data, 0, data.Length); 
requestStream.Close(); 

그러나 다른 매개 변수 (friendUserID) 값을 전달하는 방법은 무엇입니까? 아무도 도와 줄 수 있습니까?

답변

11

GET을 제외한 모든 메소드 유형에 대해 하나의 매개 변수 만 데이터 항목으로 보낼 수 있습니다. 그래서 하나가

[WebInvoke(Method = "PUT", UriTemplate = "users/user/{friendUserID}",BodyStyle=WebMessageBodyStyle.WrappedRequest)] 
[OperationContract] 
public bool UpdateUserAccount(User user, int friendUserID) 
{ 
    //do something 
    return restult; 
} 

를 쿼리 문자열 또는 요청 데이터 미트

<UpdateUserAccount xmlns="http://tempuri.org/"> 
    <User> 
     ... 
    </User> 
    <friendUserID>12345</friendUserID> 
</UUpdateUserAccount> 
+0

감사에서 노드로 매개 변수를 추가 매개 변수를 이동합니다. 나는 그 일을 잘 했어. :) –