2014-07-25 4 views
1

우편 배달부를 사용하여 wcf rest service의 메소드를 사용할 수 있습니다.스트림을 지나는 동안 Wcf Rest Service 오류가 발생했습니다.

그러나 나는 그것이 나에게 다음과 같이

Client error - 400 when posting to web hook at 'http://localhost:12456/JiraRestWebhook.svc/GetData/TES-217?user_id=james&user_key=jamesD' 

내 방법은 400 오류를 제공하는 API를 쳤을 때 내가 JIRA의은 webhook를 사용하고는 :

 [OperationContract] 
    [WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped, 
      RequestFormat = WebMessageFormat.Json, 
      ResponseFormat = WebMessageFormat.Json 
      , UriTemplate = "GetData/{value}" 
      )] 
    string GetData(string value, Stream c); 

나는 성공적으로 우편 배달부를 사용하여 칠 수 있어요. 요청에는 원시 데이터도 포함됩니다.

그러나 내 JIRA webhook은이 문제를 업데이트/생성하는 동안이 오류를 표시합니다.

참고 사항 : - 메소드에서 Stream Param을 제거하면. 그러면 내 봉사가 내게 결과를 줄 수있다.

답변

0

WCF 인터페이스에서 수정해야 할 몇 가지 사항 : 1. 먼저 WebInvoke에 Method = "GET"을 추가하는 것이 좋습니다. 2. "GetData/{value}"를 사용하고 있으므로 URL은 다음과 같이 표시되어야합니다. {value}은 매개 변수로 전달한 값 문자열을 선택할 장소입니다.

'http://localhost:12456/JiraRestWebhook.svc/GetData/jamesD' 
  1. 다른 매개 변수와 함께 스트림 C를 전달하는 이유는 확실하지. json 요청을 전달하려는 경우 WCF 서비스에서 변경해야 할 몇 가지 사항이 있습니다.

귀하의 작업 계약은 다음과 같아야합니다

[OperationContract] 
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, 
     RequestFormat = WebMessageFormat.Json, 
     ResponseFormat = WebMessageFormat.Json 
     , UriTemplate = "GetData" //this can be anything like GetDate/Json/GeMeData 
     )] 
string GetData(Stream c); 

당신의 GetData의 이제 직렬화를 사용하여 이의를 변환하는 데 필요한 JSON 요청이 있습니다.

+0

내 코드가있는 모든 것이 정확합니다. 이전에 크롬에서 우편 배달부 restclient를 사용하여 내 URL에 게시하는 경우를 설명했습니다. 예상대로 작동하지만 JIRA에서 webhook을 사용하면 동일한 코드가 작동하지 않습니다. – iGod