休息Sharp执行<int>由于强制转换异常</int>而失败

时间:2012-10-01 18:24:29

标签: restsharp

我有这个:

public Int32 NumberOfLocationsForCompany(int companyId)
{
        var response = _curl.ResetRequest()
            .WithPath(LOCATION_URL)
            .AddParam("companyId", companyId.ToString())
            .RequestAsGet()
            .ProcessRequest<Int32>();

        return response;
}

最后调用它。

    public T ProcessRequest<T>() where T : new()
    {
        var response = _client.Execute<T>(_request);

        if (response.ErrorException != null)
        {
            throw response.ErrorException;
        }
        return response.Data;
    }

但是我收到了这个错误。我不明白为什么它试图将int映射到集合或为什么它是Int64与我指定的32:无法将'System.Int64'类型的对象强制转换为'System.Collections.Generic.IDictionary `2 [System.String,System.Object的]”。

当我直接点击api时,这就是我的回归

<int xmlns="http://schemas.microsoft.com/2003/10/Serialization/">17</int>

我觉得这是我对Rest Sharp不了解的事情。我告诉execute方法期望一个Int,它接收和int,但是试图将它映射到一个集合。收藏的原因和来源是什么?

我注意到当我查看基本响应对象的内容时,存在相应的结果“17”,为什么Rest Sharp不能找到它?还在哪里找到收藏品?

1 个答案:

答案 0 :(得分:1)

在查看响应对象时,我发现返回值在Content vs Data中。每当我没有返回对象或对象列表时,我发现这是真的。

所以现在当我期待int,string,bool等时,我使用以下内容并转换返回值的类型:

    public string ProcessRequestWithValue()
    {
        var response = _client.Execute(_request);

        if (response.ErrorException != null)
        {
            throw response.ErrorException;
        }

        return response.Content;
    }

希望这有帮助!