Web Services Arduino - HTTP Post无法正常工作

vu8f3i0k  于 2022-11-15  发布在  其他
关注(0)|答案(2)|浏览(213)

我想将一些数据从Arduino发布到WebService(用.NET编写),打算将一些温度数据保存到MS SQL Server。
我在arduino的代码是:

void PostarDados(String dados, String chamador) {
  if (client.connect("mysite.com.br",80)) {
    client.println(chamador);
    client.println(F("Host: mysite.com.br"));
    client.println(F("Content-Type: application/x-www-form-urlencoded"));
    client.print(F("Content-Length: "));
    client.println(dados.length());
    client.println();
    client.println(dados);
  }
  if (client.connected()) client.stop();
}

当发送到串行端口而不是客户端时,我将获得以下文本:

POST /webservice.asmx/SetValoresTempUmidade HTTP/1.1
Host: mysite.com.br
Content-Type: application/x-www-form-urlencoded
Content-Length: 39

Chave=1&Temperatura=23.30&Umidade=42.20

我已经在web.config中启用了HTTPPOST,使HTTPPOST成为可能(我可以从浏览器成功调用Web服务):

<location path="Webservice.asmx">
    <system.web>
      <webServices>
        <protocols>
          <add name="HttpGet"/>
          <add name="HttpPost"/>
        </protocols>
      </webServices>
    </system.web>
  </location>
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Content-Type" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>

我还将ScriptMethod设置为Web服务函数:

<WebMethod()> <ScriptMethod(ResponseFormat:=ResponseFormat.Json, UseHttpGet:=True)>
Public Sub SetValoresTempUmidade(Chave As Integer, ByVal Temperatura As Double, ByVal Umidade As Double)
    Dim ctx As New DataClassesDataContext
    Try
        Dim A As New TBL_DADO
        A.CHAVE_INICIO = Chave
        A.DATA = Now
        A.TEMPERATURA = Temperatura
        A.UMIDADE = Umidade
        ctx.TBL_DADOs.InsertOnSubmit(A)
        ctx.SubmitChanges()
    Catch ex As Exception
    End Try
End Sub

最后,我尝试使用以下代码从服务器获得一些响应(没有收到任何响应):

while (client.connected()) {
  while (client.available()) {
   buffer[counter++] = client.read();
  }
}

解释了这一点,我有两个问题:
1.我做错了什么?
1.我该如何调试它?

e5njpo68

e5njpo681#

使用中

byte server[] = {XX, XX, XX, XX}; //IP
if (client.connect(server,80)) {

代替

if (client.connect("mysite.com.br",80)) {

工作过的

jljoyd4f

jljoyd4f2#

我正在为我的Arduino项目[Wemos mini pro]寻找一个工作HTTP和HTTPS的例子我创建了一个项目,我想分享它,希望它能帮助其他人。我也用其他人的例子完成,所以功劳是他们的,而不是我的。
此致,pacmanhu博士
https://github.com/drpacmanhu/DVR-image-uploader

相关问题