dies ist mein erstes Posting - habt bitte Nachsicht.
Ich habe ein Problem beim Generieren eines POSTs zu einer externen WebSeite. Es soll dort ein SMS-Dienst genutzt werden.
In meinem jugendlichen Leichtsinn habe ich die GET-Weather-Implementierung als Grundlage genutzt - genutzt hat es leider nichts
Anbei mein Code (Post-String leicht mod. wg. Zugangsdaten):
Code: Alles auswählen
void sms_request (uint8_t type)
{
char SMS_POST_STRING[500];
SMS_POST_STRING[0]='\0';
strcat_P(SMS_POST_STRING, PSTR("POST /irgendwas.sms HTTP/1.1\r\n"));
strcat_P(SMS_POST_STRING, PSTR("Host: 192.168.2.100\r\n"));
strcat_P(SMS_POST_STRING, PSTR("User-Agent: Mozilla/4.0\r\n"));
strcat_P(SMS_POST_STRING, PSTR("Content-Type: application/x-www-form-urlencoded\r\n"));
strcat_P(SMS_POST_STRING, PSTR("Content-Length: "));
unsigned long index = MAX_TCP_ENTRY;
char post[200];
//if (http_get_state > 1 && http_get_state < 20) http_get_state++;
http_get_state=0;
if (http_get_state == 0)
{
//ARP Request senden
if(arp_request (SMS_SERVER_IP))
{
for(unsigned long a=0;a<2000000;a++){asm("nop");};
tcp_port_open (SMS_SERVER_IP,LBBL_ENDIAN_INT(80),LBBL_ENDIAN_INT(my_http_cp));
unsigned char tmp_counter = 0;
while((index >= MAX_ARP_ENTRY) && (tcp_entry[index].app_status != 1))
{
index = tcp_entry_search (SMS_SERVER_IP,LBBL_ENDIAN_INT(80));
if (tmp_counter++ > 30)
{
SMS_DEBUG("TCP Eintrag nicht gefunden (HTTP_CLIENT)!\r\n");
return;
}
}
SMS_DEBUG("TCP Eintrag gefunden (HTTP_CLIENT)!\r\n");
tcp_entry[index].first_ack = 1;
http_get_state = 2;
}
else
{
http_get_state = 1;
}
SMS_DEBUG("http_get_state=%i\r\n", http_get_state);
}
if (http_get_state == 2 )
{
SMS_DEBUG("\r\n\r\n\r\nDaten Senden\r\n");
strcpy_P(post, PSTR("login=XXX&group=XXX&pin=XXX&snr=0049XXX000&dnr=0049XXX&msg="));
switch (type)
{
case 1:
strcat_P(post, SMS_MESSAGE1);
break;
case 2:
strcat_P(post, SMS_MESSAGE2);
break;
case 3:
strcat_P(post, SMS_MESSAGE3);
break;
}
strcat_P(post, PSTR("&type=text&countrycode=49&tariff=0\r\n"));
SMS_DEBUG("Inhalt POST-Variable %s", post);
unsigned char nlen=strlen(post);
char buffer[6];
itoa(nlen, buffer, 10);
strcat(SMS_POST_STRING, buffer);
strcat_P(SMS_POST_STRING, PSTR("\r\n\r\n"));
strcat(SMS_POST_STRING, post);
SMS_DEBUG("POST HEADER:\r\n%s", SMS_POST_STRING);
index = tcp_entry_search (SMS_SERVER_IP,LBBL_ENDIAN_INT(80));
memcpy(ð_buffer[TCP_DATA_START],SMS_POST_STRING, strlen(SMS_POST_STRING));
tcp_entry[index].status = ACK_FLAG | PSH_FLAG;
create_new_tcp_packet(strlen(SMS_POST_STRING),index);
}
}
Danke und Gruß, Oliver