I am wanting to POST some data from Arduino to WebService (written in .NET), intending to save some temperature data to MS SQL Server.
My code in arduino is:
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();
}
When sending to Serial instead of client, I am obtaining the following text:
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
I have enabled HTTP POST in web.config to make HTTP POST possible (I can successfully invoke webservice from browser):
<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>
I have also set ScriptMethod
to my webservice functions:
<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
Finally, I am trying to get some response from server using the following code (not receiving anything):
while (client.connected()) {
while (client.available()) {
buffer[counter++] = client.read();
}
}
Explained that, I have two questions:
Using
byte server[] = {XX, XX, XX, XX}; //IP
if (client.connect(server,80)) {
instead of
if (client.connect("mysite.com.br",80)) {
worked