我有一个python客户机,它假设通过post-webapi调用从DB获取用户详细信息,但是当我调试webapi时,传递给post方法的参数为null。从python站点,我将字典序列化为json并网站.api应该将其作为名为Credentials的自定义对象接收,并使用它从DB获取数据并将其发回。你知道吗
我用的是C#client,所有的东西都很好用,json看起来完全一样。 我还尝试了restle客户机,当我从python复制粘贴体值时,效果很好。你知道吗
Python:
def CredentialsCheck(self,credentials):
credentialsDictionary = { "Email": credentials.email, "Password":
credentials.password}
data = json.dumps(credentialsDictionary)
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
request = requests.post(self.url,json = data,headers = headers)
response = request.json()
print(response)
creds = UserCredentials("n","s")
api = WebApiDataHandler()
api.CredentialsCheck(creds)
显然还有init(self):我在这里设置url
C#UI:-这个很好用。你知道吗
public CalendarUser CredentialsCheck(CalendarUserCredentials credentials)
{
wc.Headers.Add("Content-Type", "application/json");
wc.Headers.Add("Data-Type", "application/json");
string userJson = serializer.Serialize(credentials);
string test = wc.BaseAddress + "GetUser" + userJson;
CalendarUser loggedInUser = serializer.Deserialize<CalendarUser>
(wc.UploadString(wc.BaseAddress + "GetUser", "Post", userJson));
if (loggedInUser.Name != "" && loggedInUser.Surname != "" &&
loggedInUser.Name != null && loggedInUser.Surname != null)
return loggedInUser;
else
throw new ArgumentException("Incorrect log in details.");
}
C#web api控制器:
[HttpPost]
public CalendarUser GetUser([FromBody]CalendarUserCredentials credentials) //when i put breakpoint here it fires but value of CalendarUserCredentials is null
{
CalendarUser user = new CalendarUser();
dataHandler.CredentialsCheck(credentials, out user);
return user;
}
我希望webapi GetUser方法接收CalendarUserCredentials,电子邮件的值为“n”,密码的值为“s”
我通过将CalendarUserCredentials更改为字符串,然后反序列化此字符串来解决此问题,不过如果有更好的解决方案,请与我共享:)
我想理解为什么它从C#接受json并将其正确转换为CalendarUserCredentials,但如果我从Python发送相同的json,它只会看到空的O.O
相关问题 更多 >
编程相关推荐