繁体   English   中英

使用RestSharp,Xamarin和Visual Studio创建GET请求

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM