最近小弟准备做一个AJAX 的开源的开发框架以方便JAVA程序的调用
程序的实现方法是
在ATL 工程里对服务器发送数据包(数据包都是BASE64了的)然后在服务器端的JAVA程序里
对数据包进行解码
VC6里程序 发送数据的代码大概如下,现在我可以调用CHttpFile::WriteString 发送一段数据到服务器并且可以在服务器
端进行解码,但现在的问题是,我发送请求到服务器端的Servlet,Servlet 接受请求然后解包,并且调用相应的JAVA方法
进行操作,然后需要返回方法的结果给客服端 于是我要调用 response.getOutputStream(String.getBytes())向输出流写入字符串,此时我先调用QueryInfoStatusCode 查询状态码 然后调用readString() 获取服务器端的结果,但是问题出现了
我调用readString 的时候出现了异常,异常信息为 要求操作句柄的状态错误。
我查了MSDN 也搞不定 晕了,所以在这里求高手解决下。谢谢
CHttpConnection *m_connection = m_InternetSession.GetHttpConnection(_T(this->strServer),INTERNET_FLAG_DONT_CACHE|INTERNET_FLAG_TRANSFER_ASCII,
atoi(this->nPort));
m_HttpFile = m_connection->OpenRequest(CHttpConnection::HTTP_VERB_POST,_T("/Easy_AJAX/EasyAjaxServerlet"));
if (m_HttpFile)
{
if(!m_HttpFile->SendRequestEx(m_PacketSendMsg.GetLength()))
{
* = VARIANT_FALSE;
this->m_Error = _T("调用SendRequestEx 函数失败!");
return S_OK;
}
m_HttpFile->WriteString(m_PacketSendMsg);
DWORD dwStatusCode ;
m_HttpFile->QueryInfoStatusCode(dwStatusCode);
if (dwStatusCode>=400||dwStatusCode<=599)
{
this->m_Error = "Request URL Generate Error!";
}else{
//获取服务器端发过来的数据
m_HttpFile->ReadString(this->m_ResponseMessage);
}
m_HttpFile->EndRequest();
}
m_InternetSession.Close();
程序的实现方法是
在ATL 工程里对服务器发送数据包(数据包都是BASE64了的)然后在服务器端的JAVA程序里
对数据包进行解码
VC6里程序 发送数据的代码大概如下,现在我可以调用CHttpFile::WriteString 发送一段数据到服务器并且可以在服务器
端进行解码,但现在的问题是,我发送请求到服务器端的Servlet,Servlet 接受请求然后解包,并且调用相应的JAVA方法
进行操作,然后需要返回方法的结果给客服端 于是我要调用 response.getOutputStream(String.getBytes())向输出流写入字符串,此时我先调用QueryInfoStatusCode 查询状态码 然后调用readString() 获取服务器端的结果,但是问题出现了
我调用readString 的时候出现了异常,异常信息为 要求操作句柄的状态错误。
我查了MSDN 也搞不定 晕了,所以在这里求高手解决下。谢谢
CHttpConnection *m_connection = m_InternetSession.GetHttpConnection(_T(this->strServer),INTERNET_FLAG_DONT_CACHE|INTERNET_FLAG_TRANSFER_ASCII,
atoi(this->nPort));
m_HttpFile = m_connection->OpenRequest(CHttpConnection::HTTP_VERB_POST,_T("/Easy_AJAX/EasyAjaxServerlet"));
if (m_HttpFile)
{
if(!m_HttpFile->SendRequestEx(m_PacketSendMsg.GetLength()))
{
* = VARIANT_FALSE;
this->m_Error = _T("调用SendRequestEx 函数失败!");
return S_OK;
}
m_HttpFile->WriteString(m_PacketSendMsg);
DWORD dwStatusCode ;
m_HttpFile->QueryInfoStatusCode(dwStatusCode);
if (dwStatusCode>=400||dwStatusCode<=599)
{
this->m_Error = "Request URL Generate Error!";
}else{
//获取服务器端发过来的数据
m_HttpFile->ReadString(this->m_ResponseMessage);
}
m_HttpFile->EndRequest();
}
m_InternetSession.Close();
2. 你的ATL工程是作为一个客户端测试用的吗?
好像和服务端功能关系不大啊
3. 可以在两端单步调试看看到底怎么出的问题
4. 你好像没处理同步的问题,有可能你的ATL要读数据了,数据还没发来,
读完了,数据才到,是不是有这些问题呢
CSDN 的牛人到哪里去了呢
MD MSDN 上 写着
Group Meaning
200-299 Success
300-399 Information
400-499 Request error
500-599 Server error
但是我调用的时候返回的是一个超大的数字
m_HttpFile->EndRequest();
挪到下面这句之后调用m_HttpFile->WriteString(m_PacketSendMsg);
m_HttpFile->EndRequest(); 试试看
不过上面的代码几乎被我全部重写了,昨天晚上搞到2点终于
把这个AJAX开发框架作好了,今天早上晕晕的,不过心情还是挺好的
在这里我发个帖来感谢一下大家的支持,虽然楼上各位兄弟并未帮我解决问题
但是分数我还是给各位加上去,感谢大家来捧场