У меня есть клиент Python, который предполагает получать информацию о пользователе из БД через вызов post web api, однако, когда я отлаживаю свой web api, параметр, который я передаю методу post, имеет значение null.С сайта python я передаю словарь, сериализованный в json, и web.api должен получить его как пользовательский объект с именем Credentials и использовать его для получения данных из БД и отправки обратно.
Я использовал клиент C #, и все сработалохорошо, JSON выглядит точно так же.Я также пытался перезапустить клиент, и когда я копирую значение вставки тела из 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 # контроллер веб-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;
}
Я ожидаю, что метод веб-API GetUserполучить CalendarUserCredentials со значениями «n» для электронной почты и «s» для пароля