2012-04-24 2 views
3

나는 WCF의 휴식 서비스를 호출하기 위해 노력하고있어를 사용하여 WCF REST 서비스에 JSON 포스트 데이터를 전달할 수 없습니다 2 :피들러

User-Agent: Fiddler 
Host: localhost 
content-type: application/json;charset=utf-8 
content-length: 0 
data: {"AuthenticationInfo": "data"} 

나는 방법에 중단 점을 가지고, 그것은 중단 점 않지만, AuthenticationInfo의 값은 "데이터"항상 null이며,하지.

내가 뭘 잘못하고 있니?

감사합니다.

답변

3

[WebInvoke] 속성의 기본 "본문 스타일"은 "베어"입니다. 즉, 입력 (해당 경우, "data")을 "있는 그대로"보내야 함을 의미합니다. . 당신이 보내는 것은 입력의 포장 버전 (즉, 두 가지 방법이 있습니다, 그 키 매개 변수 이름 인 객체에 싸여

당신은이 작업을 할 수 있습니다 중 하나를 포함하도록 WebInvoke 선언을 변경 BodyStyle 매개 변수 :

[WebInvoke(
    UriTemplate = "Login", 
    RequestFormat = WebMessageFormat.Json, 
    ResponseFormat = WebMessageFormat.Json, 
    BodyStyle = WebMessageBodyStyle.WrappedRequest)] 
public string Process(string AuthenticationInfo) 

아니면 "노출"매개 변수를 보낼 수있는 요청을 변경할 수 있습니다

POST .../Login HTTP/1.1 
User-Agent: Fiddler 
Host: localhost 
Content-Type: application/json;charset=utf-8 
Content-Length: 6 

"data" 
1

Fiddler에서 HTTP 메소드를 POST로 설정하고 있습니까? 기본적으로 WCF REST 작업은 POST입니다. 수행하려는 경우 을 WebInvoke 특성으로 설정해야합니다. BTW, 귀하의 경우에는 데이터를 전송할 때 GET이 의미가 있다고 생각하지 않으므로 Fiddler에서 POST를 사용하고 있는지 확인하십시오.

+0

예, 확실히 POST가 필요하며 POST로 설정되어 있습니다. –

0

당신은 0으로 콘텐츠 길이를 보내,하지만 그것은 당신의 POST - 데이터의 길이이어야한다 .