Как разместить объект Json из c # клиента в Python API на сервере? - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь отправить данные JSON из C # (используя JObject) в API-интерфейсы Python Flask.Всякий раз, когда я проверяю это на локальном хосте, API Python может читать данные как JSON.Но когда код развернут на сервере, он не может прочитать данные и не работает.Код C # развертывается в IIS на виртуальной машине Azure, а Python развертывается как микросервис в Azure.Что я делаю неправильно?Есть ли другой способ общения между двумя языками вместо JSON.Вы можете найти фрагменты кода ниже:

C #:

string personjson = HttpContext.Request.Form["personinfo"]
var json = JObject.Parse(personjson);

_client = new HttpClient { BaseAddress = new 
Uri("http://mypythonapi.azurewebsites.net") };
_client.DefaultRequestHeaders.Clear();
_client.DefaultRequestHeaders.Accept.Clear();              
_client.DefaultRequestHeaders.Accept.Add(
                new MediaTypeWithQualityHeaderValue("application/json"));

var response = await _client.PostAsJsonAsync("/insertPersonNode", 
json);
var message = response.IsSuccessStatusCode ? "Data posted" : $"Failed to post data. Status code:{response.StatusCode}";

Python:

@app.route('/insertPersonNode', methods=['POST'])
def insertPersonNode():
    try:        
        UserName = request.authorization['username']
        Password = request.authorization['password']
        userLoginNode = userAuthentication(UserName, Password)
        data = request.json 

1 Ответ

0 голосов
/ 12 октября 2018

Наконец-то я нашел решение этой проблемы.Использование PostAsync вместо PostAsJsonAsync работало для меня.

var response = await _client.PostAsync("/insertPersonNode", new StringContent(personjson, Encoding.UTF8, "application/json"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...