Estoy tratando de PUBLICAR JSON a un servicio WCF. El objeto json contiene una matriz. Me pregunto cómo enlazar correctamente a los datos de mi contrato. Si alguien me puede dar un puntero aquí, lo agradecería muchísimo. Actualmente mi carro objeto es null

Esto es lo que mi servicio de interfaz se parece a:

public interface IService
 {

[OperationContract]
 [WebInvoke(UriTemplate = "/cart", Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json,ResponseFormat = WebMessageFormat.Json)]
 Ship GetShipInfo( Cart cart, string Website);
 }

[DataContract]
 public class Cart
 {
 [DataMember]
 public Int32 ProductID { get; set;}
 [DataMember]
 public decimal ItemPrice { get; set; }
 [DataMember]
 public Int16 Qty { get; set; }
 [DataMember]
 public String SizeWidth { get; set; }
 }

Mi llamada de Cliente es la siguiente

LLAMADA DE CLIENTE

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Runtime.Serialization.Json;
using System.Net;
using System.IO;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DataContractJsonSerializer obj = new DataContractJsonSerializer(typeof(string));
Cart cart = new Cart{ ProductID = 1000, ItemPrice = Convert.ToDecimal(32.50), Qty = 1, SizeWidth = 6M };
WebClient Proxy1 = new WebClient();
Proxy1.Headers["Content-type"] = application/json”;
MemoryStream ms = new MemoryStream();
DataContractJsonSerializer serializerToUplaod = new DataContractJsonSerializer(typeof(Cart));
serializerToUplaod.WriteObject(ms, cart);
byte[] data = Proxy1.UploadData(“http://localhost:54897/IphoneService.svc/cart”, “POST”, ms.ToArray());
Stream stream = new MemoryStream(data);
obj = new DataContractJsonSerializer(typeof(Ship));
var Ship = obj.ReadObject(stream) as Ship;
}
public class Ship
{
public Decimal SecondDay { get; set; }
public Decimal NextDay { get; set; }
}
public class Cart
{
public Int32 ProductID { get; set; }
public Decimal ItemPrice { get; set; }
public Int16 Qty { get; set; }
public String SizeWidth { get; set; }
}
}

Mi JSON se parece a esto

{"cart":
[
{"ProductID":2957,
"Qty":1,
"ItemPrice":60,
"SizeWidth":"5M"}
]
}
Yo estaba luchando con esto así (post relacionado y otros de entrada aquí): stackoverflow.com/a/48906303/826308

OriginalEl autor user1403536 | 2012-05-18

1 Comentario

  1. 6

    Sin procesar la solicitud para su WCF RESTO método debe verse como la continuación de Fiddler:

    POST http://localhost:54897/IphoneService.svc/cart HTTP 1.1
    Content-Type: application/json
    Host: localhost
    {"cart":{"ProductId":1,"ItemPrice":60,"Qty":1,"SizeWidth":"5M"},"Website":"sample website"}

    La respuesta en JSON quedaría como a continuación:

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 30
    {"SecondDay":5.0, "NextDay":7.0}

    OriginalEl autor Rajesh

Dejar respuesta

Please enter your comment!
Please enter your name here