如何在HttpWebRequest POST中将对象作为参数传递?

Roo*_*ney 5 c# asp.net rest httpwebrequest

这里我从我的Web应用程序调用Restful WCF服务,我不知道如何将对象作为参数传递给这个.这是我的客户端代码:

protected void Button1_Click(object sender, EventArgs e)
{
    UserInputParameters stdObj = new UserInputParameters
    {
        AssociateRefId = "323",
        CpecialLoginId = "a@gmail.com",
        PartnerId = "aaaa",
        FirstName = "aaaa",
        LastName = "bbbb",
        Comments = "dsada",
        CreatedDate = "2013-02-25 15:25:47.077",
        Token = "asdadsadasd"
    };

    string url = "http://localhost:13384/LinkService.svc/TokenInsertion";

    try
    {
        ASCIIEncoding encoding = new ASCIIEncoding();
        System.Net.WebRequest webReq = System.Net.WebRequest.Create(url);
        webReq.Method = "POST";
        webReq.ContentType = "application/json; charset=utf-8";
        DataContractJsonSerializer ser = new DataContractJsonSerializer(stdObj.GetType());
        StreamWriter writer = new StreamWriter(webReq.GetRequestStream());
        writer.Close();
        webReq.Headers.Add("URL", "http://localhost:13381/IntegrationCheck/Default.aspx");
        System.Net.WebResponse webResp = webReq.GetResponse();
        System.IO.StreamReader sr = new System.IO.StreamReader(webResp.GetResponseStream());
        string s = sr.ReadToEnd().Trim();
    }
    catch (Exception ex)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

而我的服务方式:

  public string UserdetailInsertion(UserInputParameters userInput)
Run Code Online (Sandbox Code Playgroud)

Kne*_*erd 9

您必须以格式解析对象并将其写入RequestStream.

你的班

[Serializable]
class UserInputParameters {
    "your properties etc"
};
Run Code Online (Sandbox Code Playgroud)

序列化对象的代码

private void SendData(UserInputParameters stdObj) {
    DataContractJsonSerializer ser = new DataContractJsonSerializer(stdObj.GetType());
    StreamWriter writer = new StreamWriter(webReq.GetRequestStream());
    JavaScriptSerializer jss = new JavaScriptSerializer();

    // string yourdata = jss.Deserialize<UserInputParameters>(stdObj);
    string yourdata = jss.Serialize(stdObj);
    writer.Write(yourdata);
    writer.Close();
}
Run Code Online (Sandbox Code Playgroud)

这应该是诀窍.

该类JavaScriptSerializer位于命名空间中System.Web.Script.Serialization,可以在程序集中找到System.Web.Extensions (in System.Web.Extensions.dll)这里的MSDN文章:http://msdn.microsoft.com/en-us/library/bb337131.aspx