در این پست مطابق آموزشی که  در این پست داده ام، یک سرویس ایجاد خواهم کرد. متدی که در این سرویس وجود دارد پارامتری از نوع object خواهد داشت و در سمت C# نیز یک object به صورت json serialized به ان ارسال خواهیم کرد:

ابتدا مطابق کد زیر یک کلاس ایجاد کرده که پارامتر ورودی متد post خواهد بود:

public class ReqParamBean {
    private String userName;
    private String password;

    public ReqParamBean() {
        super();
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserName() {
        return userName;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPassword() {
        return password;
    }
}
حالا مطابق آموزشهای قبلی، یکی سرویس ایجاد کرده که یک متد post خواهد داشت:

import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

@Path("/")
public class Service {
    public Service() {
        super();
    }
    @POST
    @Path("sendPOST")
    @Consumes(MediaType.APPLICATION_JSON)
    public Response sendPOST(ReqParamBean reqParamBean) {
        String result =
            String.format("%s %s", reqParamBean.getUserName(),
                          reqParamBean.getPassword());
        return Response.status(201).entity(result).build();
    }
}
حالا در کد C# نیز یک کلاس مطابق زیر تعریف میکنیم:

public class ReqParamBean
    {
        public string userName { get; set; }
        public string password { get; set; }    
    }
و طبق کد زیر object مقداردهی کرده و با استفاده از Newtonsoft.Json آن را serialize میکنیم:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json;
using System.Web;
using System.Net;
using System.IO;
using System.Windows.Forms;
namespace ConsoleApplication3
{
    class Program
    {
        private const string URL = "http://IP/ADDRESS/sendPOST";        
        static void Main(string[] args)
        {
            Program.CreateObject();
        }
        private static void CreateObject()
        {
            ReqParamBean paramBean = new ReqParamBean
            {
                userName = "milad",
                password = "milad123"
            };

            var json = JsonConvert.SerializeObject(paramBean);

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
            request.Method = "POST";
            request.ContentType = "application/json";
            request.ContentLength = json.Length;
            try
            {
                using (Stream webStream = request.GetRequestStream())
                using (StreamWriter requestWriter = new StreamWriter(webStream, System.Text.Encoding.ASCII))
                {
                    requestWriter.Write(json);
                }
                WebResponse webResponse = request.GetResponse();
                using (Stream webStream = webResponse.GetResponseStream())
                {
                    if (webStream != null)
                    {
                        using (StreamReader responseReader = new StreamReader(webStream))
                        {
                            string response = responseReader.ReadToEnd();
                            MessageBox.Show(response);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }

        }
    }
}

موفق باشید
میلاد