json을 사용하여 wcf 클라이언트를 사용하여 ColdFusion 9 서비스에 요청을 보내려고합니다. 그러나 요청의 content-type은 xml을위한 것입니다.WCF Rest 클라이언트가 잘못된 내용 유형을 보내고 있습니다.
다음은 서비스 계약입니다. 당신이 볼 수 있듯이 우리는 json의 RequestFormat을 사용하여 구체화했다.
[ServiceContract(Name = "ServiceAgreementRequestService", Namespace = NetworkNamespaces.ServiceNamespace)]
public interface IServiceAgreementRequestService
{
[OperationContract]
[FaultContract(typeof(RequestFault))]
[WebInvoke(UriTemplate = "?method=CreateUser", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
CreateUserResponse CreateUser(CreateUserRequest request);
}
또한 OutGoing 요청에 Request.ContentType을 설정하려고 시도했으나 이것도 작동하지 않았습니다. 여기
using (var context = this.GetServiceClient(clientId))
{
WebOperationContext.Current.OutgoingRequest.ContentType = "application/json; charset=UTF-8";
var request = new CreateUserRequest(user.Id, user.Person.FirstName, user.Person.LastName);
var response = context.Channel.CreateUser(request);
}
는
POST http://somesite.domain.com/WebServices/ProviderService.cfc/?method=CreateUser HTTP/1.1
Content-Type: application/xml; charset=utf-8
VsDebuggerCausalityData: uIDPo7eh9U9jsBVLqVgGtqTK+eMBAAAAb++0xkOSQEmcAKZLgQEsp2/muY2ca6NJiul6pkAaWZwACQAA
Host: somehost.domain.com
Content-Length: 58
Expect: 100-continue
Accept-Encoding: gzip, deflate
{"UserId":4,"FirstName":"FirstName","LastName":"LastName"}
가 어떻게이 올바른 콘텐츠 형식을 사용합니까 보내지는 요청을입니까?
는
편집 : 후드
는 GetServiceClient (클라이언트 ID) 호출이 통신 채널을 생성 할 system.servicemodel.clientbase 및 ChannelFactory에 사용. 엔드 포인트를 동적으로 변경하는 코드 위에 클라이언트 코드가있는 코드가 있으므로 클라이언트가 변경 한 엔드 포인트.
몇 가지 추가 정보 두 가지 응용 프로그램이 있습니다. 하나는 클라이언트 응용 프로그램을 호스팅하는 .net MVC 4 웹 응용 프로그램이고 다른 하나는 백엔드 서비스를 호스팅하는 .net WCF Server 응용 프로그램입니다. 웹 응용 프로그램에서는 ColdFusion 응용 프로그램을 호출 할 수 있지만 wcf 서버 응용 프로그램에서는 호출 할 수 없습니다. 이들은 모두 동일한 코드 기반을 사용하여 발신 전화를합니다.
내가 말할 수있는 한 설정은 둘 다 동일합니다.
<system.serviceModel>
<endpointBehaviors>
<behavior name="WcfRestBehavior">
<webHttp />
</behavior>
<client>
<endpoint name="ServiceAgreementRequestService" address="http://PLACEHOLDER/" binding="webHttpBinding" behaviorConfiguration="WcfRestBehavior" contract="IServiceAgreementRequestService"/>
당신이 요청이 전송되는 방법에 대한 코드를 게시 할 수 있습니까? 서비스에서 나가는 응답의 json으로 content-type을 설정하면 CreateUserResponse 객체가 json 형식으로 반환됩니다. – Rajesh
두 번째 코드 스 니펫에는 요청을 보내는 코드가 있습니다. System.ServiceModel을 사용하여 요청을 보내는 데 사용되는 IClientChannel을 만듭니다. 요청을 구성하고 전송하기 위해 수행되는 모든 작업은 WCF에 의해 수행됩니다. – user1759444
REST 요청을 수행하려고합니까? GetServiceClient는 wsdl에서 생성 된 프록시에 존재합니다. 당신이 그것을 사용하는 경우 SOAP을 사용하여 서비스를 호출하려는 것 같아요. RESTful 방식으로 WCF 서비스를 호출하려면 HttpWebRequest 클래스를 사용해야합니다. – Rajesh