C#通过http调用JavaApi
C#发送HTTP请求,带参数
c#发送请求以json字符串格式传参,对象传参两种调用方法
C#工程
private void button1_Click(object sender, EventArgs e)
{
try
{
string url = @"http://localhost:8080/user";
System.Net.HttpWebRequest req = null;
System.Net.HttpWebResponse res = null;
req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url); //创建HTTP 请求
req.Method = "POST";
//json字符串
req.ContentType = "application/json;charset=UTF-8"; //发送参数格式
string jsonParam = "{ \"name\":\"张憨憨\",\"sex\":\"女\",\"age\":\"12\"}";
byte[] byteData = Encoding.UTF8.GetBytes(jsonParam);
int length = byteData.Length;
req.ContentLength = length;
Stream writer = req.GetRequestStream();
writer.Write(byteData, 0, length);
writer.Close();
res = (System.Net.HttpWebResponse)req.GetResponse(); //获取请求返回的响应
System.IO.StreamReader read = new System.IO.StreamReader(res.GetResponseStream()); //读取来自API 接口的响应中的内容,也就是它的体
textBox1.Text = read.ReadToEnd().ToString(); //输出StreamReader 中所有的流
}
catch (System.Net.WebException ex)
{
Console.WriteLine("This program is expected to throw WebException on successful run." +
"\n\nException Message :" + ex.Message);
if (ex.Status == WebExceptionStatus.ProtocolError)
{
Console.WriteLine("Status Code : {0}", ((HttpWebResponse)ex.Response).StatusCode);
Console.WriteLine("Status Description : {0}", ((HttpWebResponse)ex.Response).StatusDescription);
}
Console.WriteLine(ex.Message);
throw;
}
}
private void button2_Click(object sender, EventArgs e)
{
try
{
string url = @"http://localhost:8080/user";
RequestMessage requestMessage = new RequestMessage();
requestMessage.name = "王大锤";
requestMessage.sex = "男";
requestMessage.age = "12";
//创建一个http请求
System.Net.HttpWebRequest req = null;
System.Net.HttpWebResponse res = null;
req = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(url);
req.Method = "POST";
//req.RequestFormat =
req.ContentType = "application/json;charet = UTF-8";
byte[] bytData = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(requestMessage));
int length = bytData.Length;
req.ContentLength = length;
Stream writer = req.GetRequestStream();
writer.Write(bytData, 0, length);
writer.Close();
res = (System.Net.HttpWebResponse)req.GetResponse(); //获取请求返回的响应
System.IO.StreamReader read = new System.IO.StreamReader(res.GetResponseStream()); //读取来自API 接口的响应中的内容,也就是它的体
textBox1.Text = read.ReadToEnd().ToString(); //输出StreamReader 中所有的流
}
catch (Exception exc)
{
throw exc;
}
}
public class RequestMessage
{
[JsonProperty("name")]
public string name { get; set; }
[JsonProperty("sex")]
public string sex { get; set; }
[JsonProperty("age")]
public string age { get; set; }
}
javaApi
@RestController
@RequestMapping("/user")
public class ReceiveCController {
@PostMapping
public String receive(@RequestBody User user){
try {
System.out.println(user);
} catch (Exception e) {
e.printStackTrace();
}
return "我是" + user.getName() +":" +user.getSex();
}
}
以上代码仅供参考