使用c#和httpclient向Rest Api发送请求
本文关键字:Api 请求 Rest httpclient 使用 | 更新日期: 2023-09-27 17:49:42
有这样的代码:
var client = new HttpClient();
var postData = new List<KeyValuePair<string, string>>();
postData.Add(new KeyValuePair<string, string>("username:", " 1"));
postData.Add(new KeyValuePair<string, string>("password:", " 1"));
HttpContent content = new FormUrlEncodedContent(postData);
HttpResponseMessage response = await client.PostAsync(
"http://libdiary.liberty-lab.ru/api/v1/login",
content);
string result = await response.Content.ReadAsStringAsync();
return result;
他必须向服务器发出post请求。这个项目是windows phone。负责此查询的服务器上的特性看起来像(Python):
def log_in(request):
username = request.META['HTTP_USERNAME']
password = request.META['HTTP_PASSWORD']
user = auth.authenticate(username=username, password=password)
if user is not None:
auth.login(request, user)
content = json.dumps('Your welcome dear user!')
return HttpResponse(content, content_type='application/json')
else:
content = json.dumps('Sorry! Please, check your name or password.')
return HttpResponse(content, content_type='application/json')
然而,尝试访问windows手机总是一个error:INTERNAL SERVER ERROR
,在应用程序代码中返回http页面,该页上有一个错误。你能告诉我是什么问题吗?也许是我发错了数据,你能建议我怎么做才对吗?
您正在尝试访问名为HTTP_USERNAME
和HTTP_USERNAME
的键上的request
对象,这些键不存在。要么在调用站点更改,要么在目标站点更改:
username = request.META['username']
password = request.META['password']
我解决了这个问题。服务器检查报头中的用户名和密码。我只是添加了一个新的标题"用户名"和新的标题"密码",并分配他们适当的值。
HttpContent content = new FormUrlEncodedContent(postData);
content.Headers.Add("username", "1");
content.Headers.Add("password", "2");
谢谢你的帮助,尤其是Yuval Itzchakov。