2017-02-01 4 views
0

У меня есть этот простой метод POST с использованием WCF и Xamarin. Формы. Я пробовал разные подходы к форматированию и отправке данных, а также настройку сети на стороне сервера, но я все еще получаю ошибку с неправильным запросом. Вот мой код на стороне клиента:statuscode 400 reasonphrase 'bad request' version 1.1

 OrderContract order = new OrderContract 
     { 
      OrderID = "10550", 
      OrderDate = DateTime.Now.ToString(), 
      ShippedDate = DateTime.Now.ToString(), 
      ShipCountry = "india", 
      OrderTotal = "781" 
     }; 


     HttpClient httpClient = new HttpClient(); 
     var json = JsonConvert.SerializeObject(order); 
     var uri = new Uri(string.Format("http://ipaddress/Services/OrderService.svc/PlaceOrder")); 
     HttpContent httpContent = new StringContent(json); 
     httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); 
     var result = await httpClient.PostAsync(uri, httpContent); 
     await DisplayAlert("", result.ToString(), "OK"); 

и мой код на стороне сервера:

[OperationContract] 
    [WebInvoke(UriTemplate = "/PlaceOrder", 
     BodyStyle = WebMessageBodyStyle.Bare, 
     RequestFormat = WebMessageFormat.Json, 
     ResponseFormat = WebMessageFormat.Json, Method = "POST")] 
    void PlaceOrder(OrderContract order); 

и мой web.config:

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="web"> 
      <webHttp/> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    <service name="PortalRestService.OrderService"> 
     <endpoint address="" behaviorConfiguration="web" binding="webHttpBinding" bindingConfiguration="" contract="PortalRestService.IOrderService" /> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
     </service> 
    </services> 

    <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/> 

    </system.serviceModel> 

    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 

ответ

1

пожалуйста, попробуйте следующее:

 var s = new JsonSerializerSettings { DateFormatHandling = DateFormatHandling.MicrosoftDateFormat }; 
     var jsonString = JsonConvert.SerializeObject(jsonObject,s);