using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace c_http2.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class TestController : ControllerBase { [HttpPost] public IActionResult GetResult() { Request.ContentType = "application/json"; var str = new StreamReader(Request.Body); var data_text = str.ReadToEnd(); JObject data = JsonConvert.DeserializeObject<JObject>(data_text); string key1 = HttpContext.Request.Headers["key1"]; string key2 = HttpContext.Request.Headers["key2"]; data.Add("key1", (JToken)key1); data.Add("key2", (JToken)key2); return Ok(data); } [HttpGet] public IActionResult ReturnResult() { var url = "http://localhost:98/api/Test/GetResult"; string str_postdata = JsonConvert.SerializeObject(new { a = "a123", b = "b234", t = "1212c567" }); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/json;charset=utf-8"; //request.ContentLength = Encoding.UTF8.GetByteCount(str_postdata); request.Headers.Add("key1", "key1"); request.Headers.Add("key2", "key2"); Stream myRequestStream = request.GetRequestStream(); StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("utf-8")); myStreamWriter.Write(str_postdata); myStreamWriter.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd(); JObject bupo = JsonConvert.DeserializeObject<JObject>(retString); myStreamReader.Close(); myResponseStream.Close(); return Ok(bupo); } } }
發送請求,並接收數據,加ContentLength ,接收的時候,字符好像少了兩個,導致報錯,就直接屏蔽了。