我正在简单地调用API来接收一些数据。我需要发送标题以获得授权我还需要在正文上发送一些内容。这就是我想出的:
public async Task<List<LoremIpsum>> LoremIpsumJson()
{
LoremIpsum1 data = null;
try
{
var client = new HttpClient();
//now lets add headers . 1.method, 2.token
client.DefaultRequestHeaders.Add("Method", "LoremIpsumExample");
client.DefaultRequestHeaders.Add("Token", "sometoken");
HttpContent content = new StringContent("{\"Name\":\"John\",\"Surname\":\"Doe\",\"Example\":\"SomeNumber\"}", Encoding.UTF8, "application/json");
// ==edit==
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = await client.PostAsync("www.theUrlToTheApi", content);
response.EnsureSuccessStatusCode();
string json = await response.Content.ReadAsStringAsync();
data = JsonConvert.DeserializeObject<QueueInfo>(json);
}
catch(Exception ex)
{
Debug.WriteLine(ex.Message.ToString());
}
return data.data;
Debug.WriteLine(data.data);
}
应用程序在response.EnsureSuccessStatusCode();
之后中断,因为请求显然不成功。
我想我在这里真的很遗憾。我该怎么办电话?
错误是
StatusCode:406,ReasonPhrase:&#39;不可接受&#39;
答案 0 :(得分:1)
这可能有很多原因导致无效。例如:keyvalues.ToString()
很可能没有输入您想要的值。好像你可能需要序列化为json而不是仅仅调用.ToString()
。
首先使用像postman之类的工具,然后让它在那里工作,这样你就有了一个工作示例,然后尝试在C#中重新创建。它会让你的生活更轻松。
答案 1 :(得分:0)
来到这里寻找解决方案的每个人。 HttpContent不能使用标题而不是内容类型。添加内容类型时出现了一个拼写错误,该内容类型应该以这种方式添加到HttpClient中:
PWSTR name = new WCHAR[100];;
PCWSTR folder = TEXT("C:\\Users");
UINT len=100;
int id=0;
HRESULT hr = SHGetLocalizedName(folder, name, len, &id);
if (SUCCEEDED(hr)) {
wprintf(L"%ls\n", name);
ExpandEnvironmentStrings(name, name, len);
HMODULE shell_handle = LoadLibraryEx(name, NULL, DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE);
if (shell_handle) {
if (LoadString(shell_handle, id, name, len) != 0) {
wprintf(L"%ls\n", name);
}
FreeLibrary(shell_handle);
}
}