در این پست مطابق آموزشی که در این پست داده ام، یک سرویس ایجاد خواهم کرد. متدی که در این سرویس وجود دارد پارامتری از نوع 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);
}
}
}
}
موفق باشید
میلاد
dar zemn
matlab jaleb bood ;) :
Sample 13 - How to call java rest service in C#.net with an object as a parameter