WebApi Mvc Controller httpclient 数据交互

 

客户端调用:

public T callOuterInterface<T>(string fullUrl, string jsonstr)
{
HttpClient client = new HttpClient();
try
{
using (StringContent sc = new StringContent(jsonstr))
{
sc.Headers.ContentType = new MediaTypeHeaderValue("application/json");// "application/x-www-form-urlencoded");
Raize.CodeSiteLogging.CodeSite.Send(fullUrl);
var respMsg = client.PostAsync(fullUrl, sc);


if (respMsg.Result.StatusCode == System.Net.HttpStatusCode.OK)
{
string result = respMsg.Result.Content.ReadAsStringAsync().Result;
result = Regex.Unescape(result); --去掉转义字符
if (result.StartsWith("\"")) result = result.Substring(1, result.Length-1);  --去掉头字符“引号”
if (result.EndsWith("\"")) result = result.Substring(0, result.Length-1);--去掉尾字符“引号”
Common.CShare.nlogger.Debug("result:" +result);
var ret = JsonConvert.DeserializeObject<T>(result);
return ret;
}
return default;
}
}
catch (Exception e)
{
Common.CShare.nlogger.Debug("异常:" + e.Message);
return default;
}
finally
{
client.Dispose();
}
}
}

webapi contoller:

public class TestController : ApiController
{


[HttpPost]
public string mainintf( string func)
{
--接收通过httpcontent传入的json
string val = Request.Content.ReadAsStringAsync().Result;

string resultstr = "";
if (!string.IsNullOrWhiteSpace(val))
{

DataShare.loghelper.Debug("preparing ");

switch (func)
{
case "VerifyUserLogin":
resultstr = VerifyUserLogin(val);
DataShare.loghelper.Debug("ret =" + resultstr);

return resultstr;

return "";

default:
//方法调用错误,无此方法
break;
}

}
return resultstr;

}

 

注: webapi Controller 与 mVC Controller 返回的json串不同,webapi返回的字符串经过了转义,中间加上了很多的转义符号,使用时需要去掉。

  • 字符串:
  • WebApi Mvc Controller  httpclient 数据交互
  • 调用方法:
  • using System.Text.RegularExpressions;
  • content = Regex.Unescape(content);
  • WebApi Mvc Controller  httpclient 数据交互

 

仅供参考

 

上一篇:DataWhale-Pandas数据分析-Task7


下一篇:HttpClient工具栏