我是靠谱客的博主 从容人生,最近开发中收集的这篇文章主要介绍VC实现json向服务端发送数据VC实现json向服务端发送数据,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

VC实现json向服务端发送数据

本文介绍了一种通过VC结合json向服务端发送数据的方法。

json头文件及库文件

VC6.0及VS2010对应生成的json库文件工程源码获取地址:http://download.csdn.net/detail/shufac/9066215


新建一个VC工程,加载json相关的头文件以及前面json库文件工程生成的lib文件,如下图所示,



图1 加载头文件至新工程中


打开工程属性---链接器---输入---附件依赖项,添加对应模式(Debug或Release)的lib文件,如图2所示,




图2 添加lib文件依赖

客户端向服务端发送请求的函数

bool CXXXDlg::put_content_url(CString strURL, const char content[], char content_return[])

{
bool bResult = false;
DWORD dwType = 0;
CString strServer;
CString strObject;
INTERNET_PORT wPort = 0;
DWORD dwFileLength = 0;
CHttpConnection * pHC = NULL;
CHttpFile * pHF = NULL;
CInternetSession cis;
bResult =
AfxParseURL(strURL, dwType, strServer, strObject, wPort);
if(!bResult)
{
return false;
}
int iCount=0;
bool bRet=true;
while (bRet)
{
if (iCount>2)
{
bRet=false;
}
try
{
++iCount;
const int nTimeOut = 10000;
cis.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, nTimeOut); //联接超时设置
cis.SetOption(INTERNET_OPTION_CONNECT_RETRIES, 6);
//重试6次
pHC = cis.GetHttpConnection(strServer, wPort);
//取得一个Http联接
pHF = pHC->OpenRequest(CHttpConnection::HTTP_VERB_POST, strObject);
if(!pHF->SendRequest(NULL, 0, (void*)content, strlen(content)))
{
pHF->Close();
pHC->Close();
cis.Close();
return false;
}
DWORD dwStateCode = 0;
pHF->QueryInfoStatusCode(dwStateCode);
CFileStatus cfilestatus;
if(dwStateCode == HTTP_STATUS_OK)
{
pHF->Read(content_return, SERVER_CONTENT_LEN);
bResult = true;
//退出循环
bRet=false;
}
}
catch(CInternetException * pEx)
{
DWORD dwError = GetLastError();
#if XXX_DEBUG==1
char tmp[512];
sprintf(tmp, "xxx InternetException occur!%d", dwError);
OutputDebugStringA(tmp);
#endif
}
catch(...)
{
DWORD dwError = GetLastError();
#if XXX_DEBUG==1
char tmp[512];
sprintf(tmp, "xxx Unknow Exception occur!%d", dwError);
OutputDebugStringA(tmp);
#endif
}
}
pHF->Close();
pHC->Close();
cis.Close();
return bResult;
}

说明:

1.参数1是服务器对应的IP地址;

2.参数2是客户端发送给服务端的json语句;

3.参数3是服务端返回给客户端的json语句。

通过这个函数就可以完成客户端与服务端之间的握手通信了。

解析服务端返回json语句

我们最终的目的是完成客户端和服务端握手通信,客户端向服务端发送请求,然后从服务端获取我们需要的信息,这种通信语句全部是json格式的,转换成有用的信息还需要进一步的解析。

Json::Reader reader;
Json::Value root;
if (reader.parse(content_from_server, root))
{
//解析int值
ack_num = root["ack"].asInt();
iStatus=root["status"].asInt();
//解析字符串
Json::Value val_result = root["result"];
memset(previous_method, 0, sizeof(previous_method));
strcpy(previous_method, val_result["previousMethod"].asString().c_str());
}

通过以上3步,基本可以完成数据发送和解析工作了。后面再介绍通过json来实现文件传送的方法。


最后

以上就是从容人生为你收集整理的VC实现json向服务端发送数据VC实现json向服务端发送数据的全部内容,希望文章能够帮你解决VC实现json向服务端发送数据VC实现json向服务端发送数据所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部