1

我有这个:

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 不了解的地方。我告诉执行方法期待一个 Int,它接收和 int,但试图将它映射到一个集合。为什么和从哪里收集?

我注意到,当我查看基本响应对象的内容时,出现了适当的结果“17”,为什么 Rest Sharp 找不到它?仍然在哪里找到收藏?

4

1 回答 1

1

在查看响应对象时,我发现返回值在内容与数据中。每当我不返回对象或对象列表时,我发现这是真的。

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

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

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

        return response.Content;
    }

希望这可以帮助!

于 2012-10-08T21:14:53.840 回答