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 をコレクションにマップしようとしている理由、または指定した 32 ではなく Int64 である理由がわかりません。タイプ '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 がそれを見つけられないのはなぜですか? それでも、コレクションはどこにあるのでしょうか?

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 に答える