我正在尝试找出使用我的WiShield 2.0调用网页的最简单方法。我一直在寻找Web客户端示例代码,但我似乎无法让它工作。请注意,使用以太网shield执行此操作的示例没有多大用处,因为库不兼容。
这适用于测试项目,我想要做的就是调用http://xxx.xxx.xxx.xxx/pagename.php?q=variabletext
等网站。
我想我可以使用webclient_get()
来做这件事
作为webclient_get(server_ip, 80, texttopass);
,但这似乎不起作用。当我调试时,我可以看到“texttopass”正确显示为:“/ pagename.php?q = texttopass”。
我怀疑我错误地使用webclient_get()
,但在编译或调试过程中不会抛出任何错误。
任何提示?
示例代码片段如下:
strcpy(fullurl, "/post_message.php?t=Hello World! ");
Serial.println(fullurl);
webclient_get(server_ip, 80, fullurl);
当我打印完全时,我得到:
/post_message.php?t=Hello World!
这是webclient_get()在webclient.c中的样子。我很困惑为什么它没有调用完整的URL如: http://xxx.xxx.xxx.xxx/post_message.php?t=Hello%20World!
/*-----------------------------------------------------------------------------------*/
void webclient_close(void)
{
s.state = WEBCLIENT_STATE_CLOSE;
}
/*-----------------------------------------------------------------------------------*/
unsigned char webclient_get(char *host, u16_t port, char *file)
{
struct uip_conn *conn;
uip_ipaddr_t ipaddr;
uip_ipaddr(&ipaddr, host[0], host[1], host[2], host[3]);
conn = uip_connect(&ipaddr, htons(port));
if(conn == NULL) {
return 0;
}
s.port = port;
strncpy(s.file, file, sizeof(s.file));
strncpy(s.host, host, sizeof(s.host));
init_connection();
return 1;
}