Error posting data to my server
-
Hi
I'm using this code to post a json to my server. In Arduino we use HTTP client using this variables:
char server[] = "********.com";
char path[] = "/api/v2/gprs";
int port = 11880;In the request library I changed the default port 80 in HTTP to 11880
urequest.pydef request(method, url, data=None, json=None, headers={}, stream=None): try: proto, dummy, host, path = url.split("/", 3) except ValueError: proto, dummy, host = url.split("/", 2) path = "" if proto == "http:": port = 11880 elif proto == "https:": import ussl port = 443 else: raise ValueError("Unsupported protocol: " + proto)import os import pycom import machine import time import ujson import urequests from network import WLAN wlan = WLAN(mode=WLAN.STA) # Configure first UART bus to see the communication on the pc uart = machine.UART(0, 115200) # Configure second UART bus on pins P3(TX1) and P4(RX1) uart1 = UART(1, baudrate=115200) # 9600 baudrate also causes the same problem # Init WLAN try: wlan.connect(ssid="******", auth=(WLAN.WPA2, "*********")) while not wlan.isconnected(): time.sleep_ms(50) print(wlan.ifconfig()) print("WLAN connection on ...") except: print("[WLAN] try() (except). reset board.") data_set = {"dot":"gsm001","data":{"5":0,"6":999,"7":0,"14":3.0832,"31":0,"32":0,"33":0,"35":22,"38":300,"39":-50,"40":300,"42":300}} jsondump= ujson.dumps(data_set) urequests.request("POST","http://********.com/api/v2/gprs",data = jsondum, None, {"Content-Type": "application/json"},None).textbut I got the following error:
WiFi connection established MQTT ERROR! function got multiple values for argument 'user' ERROR! Could not connect to Pybytes! Pybytes configuration read from /flash/pybytes_config.json Traceback (most recent call last): File "main.py", line 27, in <module> SyntaxError: non-keyword arg after keyword arg Pycom MicroPython 1.20.2.r2 [v1.11-3a7776d] on 2020-11-23; GPy with ESP32Any idea what I'm doing wrong? I'm a newbie in pycom code, sorry
thank's
-
@ecabanas If you don't use Pybytes you probably want to disable it with
pycom.pybytes_on_boot(False)to avoid confusing messages.The issue is that you have a mix of arguments with explicit names (
name =) and without in your call tourequests.request.Either use names for all args (
method="POST", url="...", data=jsondum, json=None, headers={"Content-Type": "application/json"}, stream=None— in which case you can actually skip those where your argument matches the default) or don't use any and just respect the order (i.e. just removedata=). -
Hi @jcaron
WOW!!! thanks now is working perfect!!!Thanks again!!!
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login