Pergunta

Eu tenho este:

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

        return response;
}

que chama isso no final.

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

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

mas eu recebo este erro.Eu não entendo por que ele está tentando mapear um int a um conjunto, ou porque está Int64 vs 32 eu especificado.: Não é possível converter objeto do tipo 'System.Int64' para o tipo 'System.Coleções.Genérico.IDictionary`2[Sistema.Cadeia De Caracteres,Do Sistema.Objeto]'.

Quando eu acertar a api diretamente é isso que eu recebo de volta

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

Eu sinto que é algo que eu não sou a compreensão sobre o Resto Afiada.Eu digo o método execute para esperar um Int, ele recebe e int, mas está tentando mapeá-la para uma coleção.Por que e onde é que a coleção vem?

Tenho notado que quando eu olhar para a base de resposta do objeto o Conteúdo, o resultado apropriado "17" está presente, por que não pode Resto Afiada encontrá-lo?e ainda onde encontrar a Coleção?

Foi útil?

Solução

Ao olhar para o objeto de resposta eu encontrei o valor de retorno foi em Conteúdo vs em Dados.Eu encontrei este para ser verdadeiro sempre que eu não estava retornando um objeto ou uma lista de objetos.

Então, agora quando eu estou esperando um int, string, bool, etc eu uso o seguinte e lançou o tipo do valor de retorno:

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

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

        return response.Content;
    }

Espero que isso ajude!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top