在C#中请求Post API时,我无法删除斜杠。默认情况下,在值中添加斜杠,有一种方法可以删除字符串中的斜杠。我将字符串数组发送给api。我也用过replace,但是不起作用。
“ [\” 9782163865630.jpg \“,\” 9946239664158.jpg \“,\” 9946237403166166.jpg \“,\” 10056487272478.jpg \“,\” 10056486322206.jpg \“,\” 10060074352670.jpg \“,\” 9999843459102.jpg \“,\” 9716071170078.jpg \“,\” 9716071497758.jpg \“,\” 10052987715614.jpg \“,\” 10052985683998.jpg \“,\” 10056390115358.jpg \“ ,\“ 10056391622686.jpg \”,\“ 10056391360542.jpg \”,\“ 9837103120414.jpg \”,\“ 9837102923806.jpg \”,\“ 9837104857118.jpg \”]“
public void PostWebAPI(List<string> FileNameList)
{
string json = JsonConvert.SerializeObject(FileNameList).ToString();
json = json.Replace(@"\","");
var client = new RestClient("eg.api.stackflow.com/post");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AlwaysMultipartFormData = true;
request.AddParameter("filePaths", json);
request.AddParameter("bucketAsDir", "false");
IRestResponse response = client.Execute(request);
}
Visual Studio调试:
答案 0 :(得分:3)
反斜杠\
在您的字符串中不是可读字符,它是双引号的转义字符:\"
;它告诉编译器,反斜杠后面的"
不是字符串定界符,而是字符串的常规字符部分。
请考虑您要使用包含以下文本的字符串:"Hello"
(不是Hello
)。您将编写以下内容:
string s = "\"Hello\"";
s
确实是"Hello"
,但调试器会将其显示为"\"Hello\""
,因为它没有更好的方法将用户"
作为{{1 }}作为字符串本身的一部分。
简而言之,字符串中的转义字符"
告诉编译器使用以下字符不是编译器会考虑的默认解释。其他示例:
\
:使用常规双引号代替字符串定界符\"
"
:空字符而不是常规的\0
0
:换行符,而不是常规的\n
n
:制表符,而不是常规的\t
t
:用反斜杠代替转义字符\\
检查here中的整个列表。
因此,长话短说,不用担心,您的字符串确实是:\
。您可以通过简单地将字符串打印到控制台来验证这一点:["9782163865630.jpg","9946239664158.jpg","9946237403166.jpg",...
答案 1 :(得分:0)
斜杠实际上不在字符串中。您正在尝试删除不存在的内容。调试器只是转义双引号。单击放大镜图标,将为您提供有关调试器显示方式的一些选项。
答案 2 :(得分:0)
每个引号"
是C#
中的特殊符号。
这些反斜杠\
仅对引号"
进行转义。
它不会使您的结果错误。
尝试在Visual Studio中编写此代码:
string myString = "This is my "string""; // Error
您可以在每个引号(\"
)之前使用反斜杠对其进行修复:
string myString = "This is my \"string\""; // This work well
尝试这个here
答案 3 :(得分:0)
我遇到的是使用 RestClient 而不是上面的代码的问题,我使用了 HttpClient ,现在从API中我没有收到错误。 使用RestClient将斜线添加到请求参数,但在HttpClient中则不添加,由于此UnicodeEncoding.UTF8,“ application / json”实际值已在API参数中传递。 >
public async Task CallAPIAsync(List<string> objFileNameList)
{
var Info = new APIModel
{
filePaths = objFileNameList,
bucketAsDir = "false"
};
string request = JsonConvert.SerializeObject(Info);
using (var client = new HttpClient())
{
client.Timeout = Timeout.InfiniteTimeSpan;
var stringContent = new StringContent(request, UnicodeEncoding.UTF8, "application/json");
client.BaseAddress = new Uri("eg.api.stackflow.com/post");
var response = await client.PostAsync("post", stringContent);
var message = response.Content.ReadAsStringAsync().Result;
}
}