我想将一些数据从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.我该如何调试它?
2条答案
按热度按时间e5njpo681#
使用中
代替
工作过的
jljoyd4f2#
我正在为我的Arduino项目[Wemos mini pro]寻找一个工作HTTP和HTTPS的例子我创建了一个项目,我想分享它,希望它能帮助其他人。我也用其他人的例子完成,所以功劳是他们的,而不是我的。
此致,pacmanhu博士
https://github.com/drpacmanhu/DVR-image-uploader