当前位置: 首页 > 知识库问答 >
问题:

x-www-form-url编码为Xamarin

左凯定
2023-03-14

我在研究Xamarin。Android应用。我必须使用内容类型为x-www-form-urlencoded的rest API。我无法成功调用Rest API,在此之前,我使用了许多web服务,但我第一次使用这种类型的API。我被困在这里面了。我尝试了两种方法来消耗它:

 public static string makePostEncodedRequest(string url, string jsonparams)
    {
        string ret = "";
        var httpwebrequest = (HttpWebRequest)WebRequest.Create(url);
        httpwebrequest.ContentType = "application/x-www-form-urlencoded";
        //httpwebrequest.Accept = Config.JsonHeaderAJ;
        httpwebrequest.Method = Methods.Post.ToString();

        byte[] bytearray = Encoding.UTF8.GetBytes(jsonparams);

        using (var streamWriter = new StreamWriter(httpwebrequest.GetRequestStream(), Encoding.ASCII))
        {
            streamWriter.Write(bytearray);
            streamWriter.Flush();
            streamWriter.Close();
        }

        var httpResponse = (HttpWebResponse)httpwebrequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            ret = streamReader.ReadToEnd();
        }
        return ret;
    }       

下一个问题是:

   Dictionary<string, string> requestParams = new Dictionary<string, string ();

        requestParams.Add("value=", data1);
        requestParams.Add("&value=", data2);

        using (HttpClient client = new HttpClient())
        {
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));

            HttpResponseMessage response = client.PostAsync(Config.DomainURl + Config.StudentLoginUrl, new FormUrlEncodedContent(requestParams)).Result;

            var tokne = response.Content.ReadAsStringAsync().Result;
        }

共有1个答案

梁丘佑运
2023-03-14

我使用了以下代码来验证我项目中的用户,这可能会对您有所帮助。

public static async Task<UserData> GetUserAuth(UserAuth userauth)
    {
        bool asd= CheckNetWorkStatus().Result;
        if (asd)
        {
            var client = new HttpClient(new NativeMessageHandler());
            client.BaseAddress = new Uri(UrlAdd);// ("http://192.168.101.119:8475/");
            var postData = new List<KeyValuePair<string, string>>();
            var dto = new UserAuth { grant_type = userauth.grant_type, password = userauth.password, username = userauth.username };
            var nvc = new List<KeyValuePair<string, string>>();
            nvc.Add(new KeyValuePair<string, string>("grant_type", userauth.grant_type));
            nvc.Add(new KeyValuePair<string, string>("password", userauth.password));
            nvc.Add(new KeyValuePair<string, string>("username", userauth.username));
            var req = new HttpRequestMessage(HttpMethod.Post, UrlAdd + "token") { Content = new FormUrlEncodedContent(nvc) };

            var res = await client.SendAsync(req);
            if (res.IsSuccessStatusCode)
            {
                string result = await res.Content.ReadAsStringAsync();
                var userData = JsonConvert.DeserializeObject<UserData>(result);
                userData.ErrorMessage = "true";
                return userData;
            }
            else
            {
                UserData ud = new UserData();
                ud.ErrorMessage = "Incorrect Password";
                return ud;
            }
        }
        else
        {
            UserData ud = new UserData();
            ud.ErrorMessage = "Check Ur Connectivity";
            return ud;
        }
    }
 类似资料:
  • 我有一个Jersey 2.22 rest web服务,我的一个endpoint有以下签名: 我使用PostMan调用这个web服务,在post请求中不传递任何特定的头,我将“query”form param传递为“x-www-form-urlencoded”。 jersey应用程序由Tomcat 7托管,该Tomcat 7以JVM编码UTF-8文件启动。编码UTF-8,并将连接器的URIEncod

  • 我想使用节点模块请求复制此邮递员呼叫。请参见屏幕截图。 截图 截图2 如屏幕截图所示,在我的请求中,我需要传递一个以及值。我试着按照这篇SO帖子的前两个答案,但没有成功。 我基本上已经试过了 而且 有人能告诉我正确的方法吗? 编辑:澄清:这些请求的结果是400状态。如果我发送,我在Postman上也会得到400,但是如果我发送,那么它在postman上就会成功。我不知道如何根据要求做这件事。

  • 问题内容: REST API映射到Java对象时,采用输入内容类型: 在表单输入请求中,我正在设置my_name和my_phone的值,但是MyRequest对象带有myName和myPhone作为空值。 我正在使用Jackson批注2.3 jar 有什么建议可能有什么问题吗? 问题答案: 我最近在使用SpringMVC和Jackson时遇到了同样的问题! 在Spring中,当您将端点显式配置为仅

  • 当内容类型不是text/html、text/plain或text/xml,而是application/x-www-form-urlencoded内容类型时,我很难理解如何设置字符集。 给出以下(简化的)javascript代码: 如果我没有显式设置编码, Firebug告诉我内容类型是"Application/x-www-form-urlencoded; charset=UTF-8"。 例如,如果

  • RESTAPI在映射到Java对象时采用输入内容类型:application/x-www-form-urlencoded,如 在表单输入请求中,我正在设置my_name和my_phone的值,但MyRequest对象的myName和myPhone为null。 我正在使用Jackson annotations 2.3 jar 有什么建议吗?可能有什么问题?

  • 有人能告诉我如何使用post将下面的转换为格式吗。我检查了这个链接,但它不工作。将JSON转换为x-www-form-urlencoded 我还没有找到一个令人满意的答案。 如果我在原始中使用上面的,它在邮递员中工作正常。请看下面的屏幕 但它不适用于。它不读取Tenants_Delete命令。 下面是我尝试过的另外两种方法