首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >忽略特殊字符- Web C#

忽略特殊字符- Web C#
EN

Stack Overflow用户
提问于 2022-05-26 10:01:32
回答 1查看 659关注 0票数 1

问题:特殊字符(特别是$和C# )导致了Web ASP.NET C#中的不一致行为。调用API后,结果有时是-

结果:{“消息”:“发生错误”}

".........//api/data?Message=Test%20For%20%245700.00%20at%20"

  • MESSAGE:

  • 请求格式: url +Message;

  • 完整API调用:

,测试价格为5700.00美元

我试过的

使用Uri.EscapeDataString(request);调用API的

  1. ,但结果仍然不一定是100%成功的(50%的失败次数,其余的50%是它产生的错误消息above)
  2. Removing ($或up符号),每次

都会通过。

问:是否有一种允许特殊字符通过API (就像字符串一样)的方法?即使包含了一个特殊的字符,也有任何方法来获取简单的字符串吗?下面是一些得到信息的代码-

代码语言:javascript
复制
public List<Results> Get(string Message)
{
   //DO SOMETHING WITH THE MESSAGE AS A STRING & RETURN RESULTS
}

还有,我是怎么叫API的-

代码语言:javascript
复制
//CALLING API STEPS
string url = ".....//api/data?Message=";
string message = "Test For $5700.00 at ";
string completeURL = url + Uri.EscapeDataString(message);
var client = new WebClient();
var content = client.DownloadString(completeURL);

我在下面添加了一些额外的测试结果-

测试结果-通过

代码语言:javascript
复制
string url = ".....//api/data?Message=";
string message = "Test For $5700.00 at ";
message = message.Replace("$", "%24");//Adding this line before the URL-encoding fixes the problem
string completeURL = url + Uri.EscapeDataString(message);
var client = new WebClient();
var content = client.DownloadString(completeURL);
//PASS - COMPLETE URL: ".....//api/data?Message=Test%20for%20%25245700.00%20at%20"
//RESULT - API CALL SUCCESSFUL

测试结果-失败

代码语言:javascript
复制
string url = ".....//api/data?Message=";
string message = "Test For $5700.00 at ";
string completeURL = url + Uri.EscapeDataString(message);
var client = new WebClient();
var content = client.DownloadString(completeURL);
//FAIL - COMPLETE URL: ".....//api/data?Message=Test%20for%20%245700.00%20at%20"
//RESULT - EXCEPTION -> "The remote server returned an error: (500) Internal Server Error."
EN

回答 1

Stack Overflow用户

发布于 2022-05-27 21:23:15

感谢您添加测试结果:

代码语言:javascript
复制
//PASS - COMPLETE URL: ".....//api/data?Message=Test%20for%20%25245700.00%20at%20"
//RESULT - API CALL SUCCESSFUL

//FAIL - COMPLETE URL: ".....//api/data?Message=Test%20for%20%245700.00%20at%20"
//RESULT - EXCEPTION -> "The remote server returned an error: (500) Internal Server Error."

似乎很清楚发生了什么:

在“成功”情况下,您要传递一个百分比符号("%",十六进制0x25),而值"245700.00".

  • In是“失败”大小写,您传递的是一个美元符号(0x24),值"5700.00"".

  • Your应用程序(应用程序,而不是Web )在尝试读取“$”时失败。

我怀疑失败案例(HTTP错误500)和“成功”案例都是错误的。

我想你的意思是价值是"5700.00",而不是"245700.00“。

建议:

  • 消除了"$“..。或者.
  • 修改您的应用程序,以期望(并接受)前面的"$“符号.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72390045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档