Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Arduino和Azure移动服务的Http get请求_Azure_Arduino_Azure Mobile Services_Ethernet_Iot - Fatal编程技术网

使用Arduino和Azure移动服务的Http get请求

使用Arduino和Azure移动服务的Http get请求,azure,arduino,azure-mobile-services,ethernet,iot,Azure,Arduino,Azure Mobile Services,Ethernet,Iot,我已经将我的arduino与Azure移动服务连接起来,http post请求工作正常,我可以从传感器发送数据。但是,当使用HTTPGET请求访问表中的数据时,我将使用此数据登录,而我应该在串行窗口中获取json数据 X-cache-Lookup:网站管理员未命中:8080 这是我的Arduino上的代码。我不知道我错在哪里 #include <ArduinoJson.h> #include <SPI.h> #include <Ethernet.h> #def

我已经将我的arduino与Azure移动服务连接起来,http post请求工作正常,我可以从传感器发送数据。但是,当使用HTTPGET请求访问表中的数据时,我将使用此数据登录,而我应该在串行窗口中获取json数据

X-cache-Lookup:网站管理员未命中:8080

这是我的Arduino上的代码。我不知道我错在哪里

#include <ArduinoJson.h>
#include <SPI.h>
#include <Ethernet.h>
#define RESPONSE_JSON_DATA_LINENNO 10
// Ethernet shield MAC address (sticker in the back)
byte mac[] = { 0xA4, 0x5D, 0x36, 0x6A, 0xE1, 0xE1 };
int qq=0;
const char* server= "avirup.azure-mobile.net";
const char* table_name= "iottest";
const char* ams_key="rkIEUqVlFrgtmqNeMmaamgUQywwMjE42";
char stat;
EthernetClient client;
char fin='0';
char buffer[64];
int charIndex=0;
StaticJsonBuffer<200> jsonbuffer;

void send_request()
{
  Serial.println("\nconnecting...");
  if (client.connect(server, 80)) {
    Serial.print("sending ");  

    // GET URI
    sprintf(buffer, "GET /tables/%s HTTP/1.1", table_name);
    Serial.println(buffer);
    client.println(buffer);

    // Host header
    sprintf(buffer, "Host: %s", server);
    client.println(buffer);

    // Azure Mobile Services application key
    sprintf(buffer, "X-ZUMO-APPLICATION: %s", ams_key);
    client.println(buffer);

    // JSON content type
    client.println("Content-Type: application/json");

    //POST body
    sprintf(buffer, "", "");

    //Content length
    client.print("Content-Length: ");
    client.println(strlen(buffer));
    Serial.print("Content length: ");
    Serial.println(strlen(buffer));
    // End of headers
    client.println();

    // Request body
    client.println(buffer);

  } 
  else {
    Serial.
      println("connection failed");
  }
}

/*
** Wait for response
*/

void wait_response()
{
  while (!client.available()) {
    if (!client.connected()) {
      return;

  }
}
}
/*
** Read the response and dump to serial
*/

// Read the response and dump to serial
void read_response()
{

  int jsonStringLength;
  int jsonBufferCntr=0;
  int numline=RESPONSE_JSON_DATA_LINENNO;
  //Ignore the response except for the 10th line
  while (client.available()) {
    char c = client.read();

    if (c == '\n')
    {
      numline -=1;

    }
    else 
    {
      if (numline == 0 )
      {
    //Capture the 10th line in the response
    //To do: Could be more deterministic about this:
    //       Expect certain content, checks and balances etc.
        buffer[jsonBufferCntr++] = c; 
        buffer[jsonBufferCntr] = '\0';  
      }
    }
  }
  Serial.println("Received:");
  Serial.println(buffer);

  Serial.println("");
}
/*
** Close the connection
*/
void parse()
{
  //char json[] = "{\"id\":\"34CCC60D-15D2-4B53-AB8E-FF3745FDC945\",\"control\":1}";
  JsonObject& root = jsonbuffer.parseObject(buffer);
  if(!root.success())
  {
    Serial.println("PARSING FAILED!!!");
    return;
  }
  //fin= root["control"][0];
  int f= root["control"][0];
  Serial.println("Decoded: ");
  Serial.println(f);
}
void end_request()
{
  client.stop();
}

/*
** Arduino Setup
*/

void setup()
{
  pinMode(13,OUTPUT);
  digitalWrite(13,LOW);
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect.
  }
  if (Ethernet.begin(mac) == 0) {
    Serial.println("ethernet failed");
    for (;;) ;
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
}

/*
** Arduino Loop
*/

void loop()
{
  send_request();
  wait_response();
  read_response();
  end_request();
  delay(1000);
}
#包括
#包括
#包括
#定义响应\u JSON\u数据\u行否10
//以太网屏蔽MAC地址(背面贴纸)
字节mac[]={0xA4,0x5D,0x36,0x6A,0xE1,0xE1};
int qq=0;
const char*server=“avirup.azure mobile.net”;
const char*table_name=“iottest”;
const char*ams_key=“Rkieuqvlfrgtmqnemmamguqywwmje42”;
字符统计;
以太网络客户端;
charfin='0';
字符缓冲区[64];
int charIndex=0;
静态jsonbuffer jsonbuffer;
无效发送请求()
{
Serial.println(“\n正在连接…”);
if(客户端连接(服务器,80)){
串行打印(“发送”);
//获取URI
sprintf(缓冲区,“GET/tables/%s HTTP/1.1”,表名称);
串行打印LN(缓冲区);
client.println(缓冲区);
//主机头
sprintf(缓冲区,“主机:%s”,服务器);
client.println(缓冲区);
//Azure移动服务应用程序密钥
sprintf(缓冲区,“X-ZUMO-APPLICATION:%s”,ams_键);
client.println(缓冲区);
//JSON内容类型
println(“内容类型:application/json”);
//柱体
sprintf(缓冲区“,”);
//内容长度
client.print(“内容长度:”);
client.println(strlen(buffer));
连续打印(“内容长度:”);
Serial.println(strlen(缓冲区));
//标题末尾
client.println();
//请求主体
client.println(缓冲区);
} 
否则{
电视连续剧
println(“连接失败”);
}
}
/*
**等待回应
*/
void wait_response()
{
而(!client.available()){
如果(!client.connected()){
返回;
}
}
}
/*
**读取响应并转储到串行
*/
//读取响应并转储到串行
无效读_响应()
{
int jsonStringLength;
int jsonBufferCntr=0;
int numline=RESPONSE\u JSON\u DATA\u LINENNO;
//忽略响应,第10行除外
while(client.available()){
char c=client.read();
如果(c=='\n')
{
numline-=1;
}
其他的
{
如果(numline==0)
{
//捕获响应中的第10行
//要做的事情:可能更确定:
//期望某些内容、制衡等。
缓冲区[jsonBufferCntr++]=c;
缓冲区[jsonBufferCntr]='\0';
}
}
}
Serial.println(“已收到:”);
串行打印LN(缓冲区);
Serial.println(“”);
}
/*
**关闭连接
*/
void parse()
{
//char json[]=“id\”:“34CCC60D-15D2-4B53-AB8E-FF3745FDC945\”,“control\”:1}”;
JsonObject&root=jsonbuffer.parseObject(buffer);
如果(!root.success())
{
Serial.println(“解析失败!!!”;
返回;
}
//fin=根[“控制”][0];
int f=根[“控制”][0];
Serial.println(“解码:”);
序列号println(f);
}
无效结束请求()
{
client.stop();
}
/*
**Arduino装置
*/
无效设置()
{
pinMode(13,输出);
数字写入(13,低);
Serial.begin(9600);
而(!串行){
;//等待串行端口连接。
}
if(以太网开始(mac)==0){
Serial.println(“以太网故障”);
对于(;);
}
//给以太网屏蔽一秒钟进行初始化:
延迟(1000);
}
/*
**阿杜伊诺环路
*/
void循环()
{
发送请求();
等待响应();
read_response();
结束请求();
延迟(1000);
}

如果您试图通过浏览器或curl请求访问同一url,会发生什么情况?很抱歉回复太晚。我发现这个问题是由于我的互联网服务提供商造成的。