POST запрос на pythonanywhere дает ответ 400

У меня работает фляжный сервер, который должен получать почтовый запрос. Я использую Arduino Mega 2560 и Ethernet Shield 2. Когда я запускаю сервер локально по адресу 192.168.0.103:1337, он может прочитать запрос, сделанный от Arduino. Но когда я пытаюсь сделать запрос на raihanb13.pythonanywhere.com, он выдает мне 400 Bad request. Я проверил конечную точку API от Postman, и она работает. Вот мой код Arduino,

#include <ArduinoHttpClient.h>
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetClient.h>

// питон где угодно
char serverAddress[] = "https://raihanb13.pythonanywhere.com"; // адрес сервера
int port = 443;

// локальный хост
// char serverAddress[] = "192.168.0.103"; // адрес сервера
// инт порт = 1337;


EthernetClient ethernet;
HttpClient client = HttpClient(ethernet, serverAddress, port);

// Ethernet-щит
const byte mac[] = { 0xA8, 0x61, 0x0A, 0xAE, 0x84, 0x9B };



void setup() {
    Serial.begin(9600);
    Ethernet.begin(mac);
}

void loop() {
    Serial.println("making POST request ...");

    char* contentType = "application/x-www-form-urlencoded";
    char* postData = "name=Alice&age=12\n";

    client.post("/", contentType, postData);

    // прочитать код состояния и тело ответа
    int statusCode = client.responseStatusCode();
    String response = client.responseBody();

    Serial.print("Status code: ");
    Serial.println(statusCode);
    Serial.print("Response: ");
    Serial.println(response);

    Serial.println("Wait five seconds");
    delay(5000);
}

Это мой код Python на сервере flask,

server = Flask(__name__)

@server.route('/', methods=['POST', 'GET'])
def index():
    # return json.dumps({'name': 'alice',
    #                    'email': '[email protected]'})
    return "Index working ..." 

if __name__ == '__main__':
    server.run() # for pythonanywhere

Есть предложения? Спасибо за внимание.

, 👍0


1 ответ


1

Проблема решена, нужно использовать:

char serverAddress[] = "raihanb13.pythonanywhere.com";

Нет http или https, только адрес.

,

а что послужило причиной того, что вы поставили там http?, @Juraj