我有一个API,我用重新装配来设置调用,但是当调用它时,我收到的是一个对象而不是字符串,我不知道这里有什么问题。
var userToken = await apiClient.LoginuserBySsnAsync(ssn);
API调用的定义:
/// <summary>
/// Login user by SSN.
/// </summary>
/// <param name="ssn">user SSN in 12 digit format.</param>
/// <returns>user token.</returns>
[Get("/api/login/loginssn")]
Task<string> LoginUserBySsnAsync(string ssn);
在这种情况下,我得到的回报是";userToken";是:
"{"userToken":"rgkjnrekljgtlwgktkwljhnglterkjhnyJuYmYiOjE2NDM2NjAxNDMsImV4cCI6MTY0NjA3OTM0MywiUGF0aWVudHNzbiwerlfkrlkgfnrejgnlrekjglmeMc"}"
当我在API中直接执行(swagger(时,我得到的响应是:
{
"userToken": "rgkjnrekljgtlwgktkwljhnglterkjhnyJuYmYiOjE2NDM2NjAxNDMsImV4cCI6MTY0NjA3OTM0MywiUGF0aWVudHNzbiwerlfkrlkgfnrejgnlrekjglmeMc"
}
我所期望的是:
"rgkjnrekljgtlwgktkwljhnglterkjhnyJuYmYiOjE2NDM2NjAxNDMsImV4cCI6MTY0NjA3OTM0MywiUGF0aWVudHNzbiwerlfkrlkgfnrejgnlrekjglmeMc"
我不确定问题出在哪里,因为我在这里没有太多经验,但我很感激对改进的任何帮助
您的API正在返回一个JSON-序列化对象。可能是这样的:
public class UserTokenClass {
public string UserToken { get; set; }
}
[Get("/api/login/loginssn")]
public async Task<string> LoginUserBySsnAsync(string ssn) {
// Magic
return JsonConvert.SerializeObject(new UserTokenClass { UserToken = userTokenFromSomewhere });
}
如果你想让它只返回一个纯字符串,那么就这样做:
return userTokenFromSomewhere;
如果您不能控制API代码,那么反序列化代码中的响应:
var token = JsonConvert.DeserializeObject<UserTokenClass>(responseBody);