【问题标题】:How to add headers and parameters for a rest service from xamarin forms c#如何从 xamarin 表单 c# 为休息服务添加标头和参数
【发布时间】:2017-07-16 04:08:09
【问题描述】:
User login endpoint (POST Method)

https://developer.api.yodlee.com/ysl/restserver/v1/user/login

示例输入

cobrandName 作为路径参数传递

cobSession 作为 Authorization Header 传递

登录名和密码作为表单参数传递

cobrandName = 联合品牌的名称

loginName=testuser

密码=Yodlee123

授权:{cobSession=06142010_1:6666b4df326b8a26d6263054bdc4d1725d075230a082b8059ad7c20777b65d836b4eaa2dbf69169a448162c0ea09223012f1450934cee191

所以这是示例数据 api 数据。我已经为我自己的服务器的 api 做了很多帖子,但从来没有添加标题.. 有点困惑?

 var httpClient = new HttpClient();
        var json = JsonConvert.SerializeObject(t);
        HttpContent httpContent = new StringContent(json);
        httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
        //httpContent.Headers.Add()
        var result = await httpClient.PostAsync(WebServiceUrl, httpContent);
        var RegisterResponse = await result.Content.ReadAsStringAsync();
        CobrandLoginModel TheObject = JsonConvert.DeserializeObject<CobrandLoginModel>(RegisterResponse);

我可以拨打我的第一个电话并填充模型。但随后我需要使用 sessionid(token) 再次发送,但我需要将其插入标题中。我返回的 sessionid 将是下一个 postasync 的授权 id。

我认为正确的方法是这样的

            httpClientUser.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("userSession", TheObject.session.cobSession);

我在正确的轨道上吗??

我需要创建 HttpContent httpContent = new StringContent(json);

我如何创建格式

我需要发送 3 个参数 我需要添加返回的 sessionid 的授权头吗?

谢谢

编辑

这是我正在学习的网址 https://developer.yodlee.com/Yodlee_API/Getting_Started

需要添加参数 需要添加一个身份验证头 然后发帖

更新


我已经结束了这个

var httpClientUser = new HttpClient();
        var UserJson = JsonConvert.SerializeObject(newuser);
        HttpContent httpContentUser = new StringContent(UserJson);
        httpContentUser.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
        var createTheToken = "cobSession=" + TheObject.session.cobSession;
        var check =  httpClientUser.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Authorization", "{" + createTheToken + "}");
        var CompleteResult = await httpClientUser.PostAsync(YodleeUserLoginUrl, httpContentUser);
        var RegisterResponseUser = await CompleteResult.Content.ReadAsStringAsync();
        YodleeUserModel LoggedInUser = JsonConvert.DeserializeObject<YodleeUserModel>(RegisterResponseUser);

它仍然不起作用...在 ARC 上使用相同的凭据我可以获得响应。

但通过应用程序传递值不起作用

【问题讨论】:

    标签: httpclient dotnet-httpclient


    【解决方案1】:

    我开发了一个专门用于使用 Xamarin Forms 的 REST 客户端库。该库位于所有平台上。您可以在此处查看或获取 NuGet。包括 Xamarin Forms 示例。

    https://bitbucket.org/MelbourneDeveloper/restclient-.net/overview

    这是一个如何添加标题的示例:

    _BitbucketClient.Headers.Add("Authorization", "Basic " + credentials);
    

    【讨论】:

      【解决方案2】:

      用途:

      httpClientUser.DefaultRequestHeaders.Add("Authorization", token);

      【讨论】:

        猜你喜欢
        • 2018-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-28
        • 1970-01-01
        • 1970-01-01
        • 2020-11-10
        • 1970-01-01
        相关资源
        最近更新 更多