4

restsharp を使用してレスト サービス (wcf) を使用しようとしています。

これが私のサービスです

    [ServiceContract]
    public interface IService
    {
        [OperationContract]
        [WebInvoke(Method="POST", UriTemplate = "/PEmploy", ResponseFormat = WebMessageFormat.Xml, RequestFormat = WebMessageFormat.Xml)]
        Employee PostGetEmploy(Employee emp);
    }

    [DataContract]
    public class Employee
    {
        [DataMember]
        public int EmpNo { get; set; }
        [DataMember]
        public string EmpName { get; set; }
        [DataMember]
        public string DeptName { get; set; }
    }

これが私がそれを呼ぶ方法です

    var client = new RestClient("http://localhost:14437/Service.svc");
    var request = new RestRequest("XmlService/PEmploy", Method.POST);
    myRef.Employee emp = new myRef.Employee() { EmpNo = 101, EmpName = "Mahesh", DeptName = "CTD" };
    request.AddParameter("Employee", emp);
    RestResponse<myRef.Employee> response = (RestResponse<myRef.Employee>)client.Execute<myRef.Employee>(request);

これは私が得る例外です

    Exception:Caught: "Data at the root level is invalid. Line 1, position 1." (System.Xml.XmlException)
    A System.Xml.XmlException was caught: "Data at the root level is invalid. Line 1, position 1."

シリアル化を試みましたが、それでも同じ例外が発生しました。私は何を間違っていますか?

4

1 に答える 1

5

追加した

request.RequestFormat = DataFormat.Json

そしてこれはトリックをしました。

完全なコード

var client = new RestClient("http://localhost:14437/Service.svc");
var request = new RestRequest("XmlService/PEmploy", Method.POST);
request.RequestFormat = DataFormat.Json;
myRef.Employee emp = new myRef.Employee() { EmpNo = 101, EmpName = "Mahesh", DeptName = "CTD" };
request.AddParameter("Employee", emp);
RestResponse<myRef.Employee> response = (RestResponse<myRef.Employee>)client.Execute<myRef.Employee>(request);
于 2012-09-17T19:45:46.933 に答える