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
Есть предложения? Спасибо за внимание.
1 ответ
▲ 1
Проблема решена, нужно использовать:
char serverAddress[] = "raihanb13.pythonanywhere.com";
Нет http или https, только адрес.
,
@Abdullah Raihan Bhuiyan
Смотрите также:
- Как подключить Arduino и базу данных MySQL сервера WAMP?
- Как создать метеостанцию, используя только чип GY-BME280-3.3 и Ethernet-шилд w5100, установленный на arduino mega 2560 r3
- Arduino Ethernet Shield: "no matching function for call to 'EthernetClass::begin()'"
- Как разделить входящую строку?
- Как использовать SPI на Arduino?
- Как сбросить или отформатировать Arduino?
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Arduino Due vs Mega 2560
а что послужило причиной того, что вы поставили там http?, @Juraj