客户端调用:
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返回的字符串经过了转义,中间加上了很多的转义符号,使用时需要去掉。
- 字符串:
- 调用方法:
- using System.Text.RegularExpressions;
- content = Regex.Unescape(content);
仅供参考