C 和Java通讯的408 request timeout错误问题。

Jamesonline 2008-02-25 01:56:17
服务端是java的servlet。客户端要求是c。现在遇到问题啦。大侠们帮助看看啊。

服务端的接口是http://192.168.10.11:9080/msg/send。服务器是基于WebSphere的。

我就是要在客户端post一个xml格式的数据过去,让服务端的那个接口接收。

可以用c来发送吧?首先帮小弟看看这个思路有没有错。谢谢哦。

客户端程序:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <errno.h>
#include <ctype.h>
#include <netdb.h>
#include <arpa/inet.h>

#define SENDDATALEN 2048
#define IP "192.168.10.11"
#define PORT 9080
char sendData[SENDDATALEN];

char * getSendData()
{
char loginUser[] = "username";
char loginPwd[] = "password";
char content[SENDDATALEN-20];

memset(sendData, 0, sizeof(sendData));
strcat(sendData, "Accept-Charset: utf-8;q=0.7,*;q=0.7\r\n");
strcat(sendData, "Keep-Alive: 300\r\n");
strcat(sendData, "Connection: keep-alive\r\n");
strcat(sendData, "Content-Type: application/x-www-form-urlencoded\r\n");
strcat(sendData, "LoginUser=username&LoginPwd=password&content=");
strcat(sendData, " <?xml version=\"1.0\" encoding=\"GBK\" ?> ");
strcat(sendData, " <aa> 测试 </aa> ");
/*printf("%s\n", sendData);*/

return sendData;
}

void sendit()
{
int sockfd;
int len=0;
char url[] = "http://192.168.10.11:9080/msg/send";
char *chSend, chRecv[2048];
struct sockaddr_in client;

memset(chRecv, 0, sizeof(chRecv));

sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd == -1)
{
printf("sockfd = -1\n");
exit(1);
}

client.sin_family = AF_INET;
client.sin_port = htons(PORT);
client.sin_addr.s_addr = inet_addr(IP);
memset(&(client.sin_zero), 0, sizeof(client.sin_zero));

if(connect(sockfd, (struct sockaddr *)&client, sizeof(struct sockaddr)) == -1)
{
printf("connect = -1\n");
exit(1);
}

chSend = getSendData();
printf("sizeof(getSendData()) = %d\n", strlen(chSend));
len = send(sockfd, getSendData(), strlen(chSend), 0);
printf("send len = %d\n", len);

len = recv(sockfd, chRecv, sizeof(chRecv), 0);
printf("recv len = %d\n", len);
printf("-------Recv-------\n");
printf("recv string = %s\n", chRecv);

close(sockfd);

}

void main()
{
printf("socket\n");
sendit();
}
-------
我这里贴上部分输出:
Sun(James):> a.out
...
sizeof(getSendData()) = 181
send len = 181
recv len = 149
-------Recv-------
recv string =
HTTP/1.1 408 Request Timeout
Connection: Close
Content-Length: 0
Date: Sat, 12 Jun 2021 21:43:34 GMT
Server: WebSphere Application Server/6.0

这个应该是发送数据成功吧。早上服务端没开启服务的时候,一直卡在发送哪里。
开启的时候发送很快,但一直卡在接受哪里啊。所以我就觉得肯定是发送成功了。

还有如果发生成功的话,怎么会提示是:408 Request Timeout错误呢

这个错误不是表示客户端错误么。我晕倒了。

有什么教程可以看的么。谢谢大家。
...全文
514 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jamesonline 2008-02-25
  • 打赏
  • 举报
回复
没人up么。。。。

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧