![](/img/trans.png)
[英]Can't install RestSharp for Mobile Apps into visual Studio for Xamarin
[英]Creating GET request using RestSharp, Xamarin and Visual studio
我正在尝试为Xamarin中的android和Visual Studio 2015服务器创建RestSharp GET请求。
我使用Fiddler来查看来自Chrome浏览器的请求,就是这样:
GET http://10.10.20.72:8090/ProcessTOGO/Login.aspx HTTP/1.1
Host: 10.10.20.72:8090
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36
Referer: http://10.10.20.72:8090/ProcessTOGO/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: he-IL,he;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: ASP.NET_SessionId=iirbfr55caklfmnebmfqxmjr; i18next=en-US
我尽力使用RestSharp发出类似请求,并得到以下信息:
CookieContainer cookies = new CookieContainer();
cookies.Add(new System.Uri(@"http://10.10.20.72:8090/ProcessToGo/Login.aspx"), new Cookie("ASP.NET_SessionId", "iirbfr55caklfmnebmfqxmjr"));
cookies.Add(new System.Uri(@"http://10.10.20.72:8090/ProcessToGo/Login.aspx"), new Cookie("i18next", "en-US"));
var client = new RestClient(@"http://10.10.20.72:8090/ProcessToGo/Login.aspx");
var request = new RestRequest(Method.GET);
client.UserAgent = @"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36";
client.CookieContainer = cookies;
var queryResult = client.Execute<JsonObject>(request);
该请求不会崩溃,但是当我快速查看一下queryResult并收到以下错误消息时:“找到了意外的声明标记。第2行,位置3。”
这是内容:
\r\n
<!doctype html>\r\n
<html>\r\n
<head>
<title>\r\n\t
Process To Go > Login\r\n
</title>
<meta charset=\"utf-8\" />
<meta name=\"viewport\" content=\"width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;\" />
<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />
<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\" />
<meta name=\"HandheldFriendly\" content=\"True\" />
<meta name=\"MobileOptimized\" content=\"320\" />\r\n\t
<!-- Mobile IE allows us to activate ClearType technology for smoothing fonts for easy reading -->\r\n\t
<meta http-equiv=\"cleartype\" content=\"on\" />\r\n\t
<!-- Custom css -->\r\n\t
<link id=\"cssFile\" type=\"text/css\" rel=\"stylesheet\" href=\"css/custom.css\" media=\"screen\" />
</head>\r\n
<body style=\"background:#35749d\">\r\n
<form name=\"form1\" method=\"post\" action=\"Login.aspx\" id=\"form1\">\r\n
<div>\r\n
<input type=\"hidden\" name=\"__VIEWSTATE\" id=\"__VIEWSTATE\" value=\"/wEPDwULLTEzMTYyMTY0NjFkZOXMM9hn0xf/xrGoXm3/cuf05qnm\" />\r\n
</div>\r\n\r\n
<div>\r\n\r\n\t
<input type=\"hidden\" name=\"__VIEWSTATEGENERATOR\" id=\"__VIEWSTATEGENERATOR\" value=\"1F881200\" />\r\n
</div>\r\n
<div id=\"loginPage\">\r\n
<div id=\"logo\"></div>\r\n
<ul class=\"errors\">\r\n
<li id=\"errUsername\" data-i18n=\"login.errUsername\"></li>\r\n
<li id=\"errPassword\" data-i18n=\"login.errPassword\"></li>\r\n
<li id=\"errServer\" data-i18n=\"login.errServer\"></li>\r\n
</ul>\r\n
<input name=\"txtUsername\" type=\"text\" id=\"txtUsername\" placeholder=\"User Name\" class=\"txtbox\" data-i18n=\"[placeholder]login.userName\" autocomplete=\"off\" />\r\n
<input name=\"txtPassword\" type=\"password\" id=\"txtPassword\" placeholder=\"Password\" class=\"txtbox\" data-i18n=\"[placeholder]login.password\" autocomplete=\"off\" />\r\n
<input type=\"submit\" name=\"btnLogin\" value=\"Sign-in\" id=\"btnLogin\" class=\"btnLogin\" />\r\n
</div>\r\n
</form>\r\n \t\r\n
<script src=\"http:////ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js\"></script>\r\n
<script>window.jQuery || document.write('<script src=\"js/libs/jquery-1.8.1.min.js\"><\\/script>')</script>\r\n
<script src=\"js/libs/i18next-1.6.0.min.js\" type=\"text/javascript\"></script>\r\n
<script src=\"js/libs/jquery.cookie.js\" type=\"text/javascript\"></script>\r\n
<script src=\"js/login.js\" type=\"text/javascript\"></script>\r\n
</body>\r\n
</html>\r\n
我究竟做错了什么? 有人可以帮我吗?
先感谢您!
您正在执行此操作:
var queryResult = client.Execute<JsonObject>(request);
在此行中,您告诉client
您希望从Web服务器接收JSON字符串。 因此, RestSharp
尝试将传入的响应视为JSON字符串。 问题是您没有收到JSON。 您收到HTML。 因此,JSON解析器由于无法处理HTML而引发异常。
您真正期望哪种回应?
您对HTML响应满意吗? 您是否想要将内容字符串存储在任何地方? 然后执行以下操作:
var queryResult = client.Execute<JsonObject>(request);
var htmlContent = queryResult.Content;
如果您希望接收JSON字符串,则对client.Execute<JsonObject>(request)
的调用可以。 但是,您应该查看一下Web服务的文档。 您似乎用错了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.