در این پست مطابق آموزشی که در این پست داده ام، یک سرویس ایجاد خواهم کرد. متدی که در این سرویس وجود دارد پارامتری از نوع 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