コード例 #1
1
// Poll and notify main thread if responses exists in queue
KDvoid CCHttpClient::dispatchResponseCallbacks ( KDfloat fDelta )
{ 
    CCHttpResponse*  pResponse = KD_NULL;
    
	kdThreadMutexLock ( l_pResponseQueueMutex );
    if ( l_pResponseQueue->count ( ) )
    {
        pResponse = dynamic_cast<CCHttpResponse*> ( l_pResponseQueue->objectAtIndex ( 0 ) );
        l_pResponseQueue->removeObjectAtIndex ( 0 );
    }
    kdThreadMutexUnlock ( l_pResponseQueueMutex );
    
    if ( pResponse )
    {
        --l_uAsyncRequestCount;
        
        CCHttpRequest*  pRequest = pResponse->getHttpRequest ( );
        CCObject*        pTarget = pRequest->getTarget ( );
        SEL_CallFuncND pSelector = pRequest->getSelector ( );

        if ( pTarget && pSelector ) 
        {
            ( pTarget->*pSelector ) ( (CCNode*) this, pResponse );
        }
        
        pResponse->release ( );
    }
    
    if ( 0 == l_uAsyncRequestCount ) 
    {
        CCDirector::sharedDirector ( )->getScheduler ( )->pauseTarget ( this );
    }   
}
コード例 #2
0
ファイル: GameState.cpp プロジェクト: CicadaKim/ZombieHunter
void GameState::onHttpRequestCompleted(CCNode* sender,void *data)
{
	CCHttpResponse *response = (CCHttpResponse*)data;
	if(!response)
		return;

	if( NULL != strlen(response->getHttpRequest()->getTag()))
	{
		CCLog("%s complete.",response->getHttpRequest()->getTag());
	}
	int statusCode = response->getResponseCode();
	CCLog("response code : %d",statusCode);

	if(!response->isSucceed())
	{
		CCLog("response failed");
		CCLog("errorbuffer: %s",response->getErrorBuffer());
		return;
	}
	std::vector<char>* buffer = response->getResponseData();

	char str[200] = {""};
	unsigned int i;

	for(i=0;i<buffer->size();i++)
	{
		str[i] = (*buffer)[i];
	}
	str[i] = '\0';
	CCLog("%s",str);
}
コード例 #3
0
void ParseFile::downloadFileFinished(CCNode* sender, void* param)
{
	CCString* savePathName = 0;
	ParseError* error = new ParseError();

	CCHttpResponse* response = (CCHttpResponse*)param;
	
	if (response->getResponseCode() == 200)
	{
		FILE* file = 0;
		const char* errorMsg = 0;
		savePathName = (CCString*)response->getHttpRequest()->getUserData();
		std::vector<char>* responseData = response->getResponseData();
		do
		{
			file = fopen(savePathName->getCString(), "wb");
			if (file == 0)
			{
				errorMsg = "error open file!";
				break;
			}
			size_t writeLen = fwrite(&responseData->front(), 1, responseData->size(), file);
			if (writeLen != responseData->size())
			{
				errorMsg = "error write file!";
				break;
			}
		}while(0);

		if (file)
		{
			fclose(file);
		}
		if (errorMsg)
		{
			error->SetError(errorMsg);
		}
	}
	else
	{
		if (strlen(response->getErrorBuffer()) > 0)
		{
			error->SetError(response->getErrorBuffer());
		}
		else
		{
			std::vector<char>* responseData = response->getResponseData();
			responseData->push_back('\0');
			error->SetError(&responseData->front());
		}
	}

	this->downloadFileCompleted(savePathName?savePathName->getCString():0, error);

	savePathName = (CCString*)response->getHttpRequest()->getUserData();
	savePathName->release();

	delete error;
}
コード例 #4
0
void EziSocialObject::onHttpRequestCompleted(cocos2d::CCNode *sender, void *data)
{
    
    CCHttpResponse* response = (CCHttpResponse*)data;
    
    if (!response)
    {
        CCLOG("[EziSocial Error]: No Response");
    }
    
    if (0 != strlen(response->getHttpRequest()->getTag()))
    {
        //CCLog("%s completed", response->getHttpRequest()->getTag());
    }
    
    int statusCode = response->getResponseCode();
    
    char statusString[64] = {};
    sprintf(statusString, "HTTP Status Code: %d, tag = %s", statusCode, response->getHttpRequest()->getTag());
    
    if (!response->isSucceed())
    {
        CCLog("[EziSocial Error]: response failed");
        CCLog("[EziSocial Error]: error buffer: %s", response->getErrorBuffer());
        return;
    }
    
    // Dump the data
    std::vector<char> *buffer = response->getResponseData();
    
    // Create the CCSprite from data dump...
    
    CCImage * img=new CCImage();
    img->initWithImageData(&(buffer->front()), buffer->size());
    
    // Save file for resue.
    std::string writablePath = CCFileUtils::sharedFileUtils()->getWritablePath();
    writablePath.append(response->getHttpRequest()->getTag());
    img->saveToFile(writablePath.c_str());
    delete img;
    
    const char* userID = "";
    std::string tagString = "";
    tagString.append(response->getHttpRequest()->getTag());
    
    std::vector< std::string > strings = EziSocialObject::tokenizeStr(tagString, "_");
    userID = strings[0].c_str();
    
    internalUserPhotoCallback(writablePath.c_str(), userID);
}
コード例 #5
0
ファイル: S411FeedBack.cpp プロジェクト: Ratel13/JinRiCompany
void S411FeedBack::onPostFinished(CCNode *node,void *data)
{
    AppDelegate::loadingLabel ->setString("");
    _menu->setEnabled(true);
	CCHttpResponse *response = (CCHttpResponse*)data;
	if (!response)
	{
		return;
	}
	int s=response->getHttpRequest()->getRequestType();
	CCLOG("request type %d",s);
    
    
	if (0 != strlen(response->getHttpRequest()->getTag()))
	{
		CCLOG("%s ------>oked", response->getHttpRequest()->getTag());
	}
    
	int statusCode = response->getResponseCode();
	CCLOG("response code: %d", statusCode);
    
    
	char statusString[64] = {};
	sprintf(statusString, "HTTP Status Code: %d, tag = %s", statusCode, response->getHttpRequest()->getTag());
	CCLOG("statusString");
    
	if (!response->isSucceed())
	{
		CCLOG("response failed");
		CCLOG("error buffer: %s", response->getErrorBuffer());
        AppDelegate::loadingLabel->setString("提交失败");
        this->schedule(schedule_selector(S411FeedBack::time),1.0f,false,0.0);
		return;
	}
    
    
    
    
	//上面这些都是一些判断是否请求成功,下面这个是获得的请求数据
	std::vector<char> *buffer = response->getResponseData();
	CCLOG("Http Test, dump data: ");
	for (unsigned int i = 0; i < buffer->size(); i++)
	{
		CCLOG("%c", (*buffer)[i]);//这里打印从服务器返回的数据
        
	}
	CCLOG("\n");
    AppDelegate::loadingLabel->setString("提交成功");
    this->schedule(schedule_selector(S411FeedBack::time),1.0f,false,0.0);
}
コード例 #6
0
ファイル: InGameScene.cpp プロジェクト: JungHanter/SWMTAMA
void InGameScene::onHttpRequestCompleted(cocos2d::CCNode *sender, void *data)
{
    CCHttpResponse *response = (CCHttpResponse*)data;
    
    if (!response)
    {
        return;
    }
    
    // You can get original request type from: response->request->reqType
    if (0 != strlen(response->getHttpRequest()->getTag()))
    {
        CCLog("%s completed", response->getHttpRequest()->getTag());
    }
    
    int statusCode = response->getResponseCode();
    char statusString[64] = {};
    sprintf(statusString, "HTTP Status Code: %d, tag = %s", statusCode, response->getHttpRequest()->getTag());
    //m_labelStatusCode->setString(statusString);
    CCLog("response code: %d", statusCode);
    
    if (!response->isSucceed())
    {
        CCLog("response failed");
        CCLog("error buffer: %s", response->getErrorBuffer());
        return;
    }
    
    // dump data
    std::vector<char> *buffer = response->getResponseData();
	std::string s = "";
    bool isDataStarted = false;
    for (unsigned int i = 0; i < buffer->size(); i++)
	{
        if( isDataStarted == false && !isspace((*buffer)[i]) )
            isDataStarted = true;
        if( isDataStarted == false) continue;
        
		s += (*buffer)[i];
    }
	CCLog("%s", s.data() );
    CCLog("\n");
    
    if( strcmp(response->getHttpRequest()->getTag(), "URL_CREATE_ANIMAL") == 0)
    {
        string szAnimalKey = s;
        CCLog("InGameScene::onHttpRequestCompleted-%s : %s", response->getHttpRequest()->getTag(), szAnimalKey.data() );
    }
}
コード例 #7
0
ファイル: ChatLayer.cpp プロジェクト: crazyit/iGame
void ChatLayer::requestFinishedCallback(CCNode* pSender,void *data)
{
    CCHttpResponse *response =  (CCHttpResponse*)data;
	if(response==NULL)
	{
		return;
	}
	int statusCode = response->getResponseCode();
	char statusString[64] = {};
	CCLOG(statusString, "HTTP Status Code: %d, tag = %s", statusCode, response->getHttpRequest()->getTag());

	if (!response->isSucceed())   
	{  
		CCLog("response failed");  
		CCLog("error buffer: %s", response->getErrorBuffer());  
		return;  
	}
	std::vector<char> *buffer = response->getResponseData(); 

	std::string content(buffer->begin(),buffer->end());

	XMLParser *xmlParser = XMLParser::parseWithString(content.c_str());
	CCLOG("%s",xmlParser->getString("content")->getCString());

//	parseJson();
}
コード例 #8
0
void MyHttpRequest::onHttpRequestCompleted(CCNode *sender,void *data)  
{  
	m_isCompleted=true;
	CCHttpResponse *response = (CCHttpResponse*)data;  
	if (!response)  
	{  
		return;  
	}  
	int s=response->getHttpRequest()->getRequestType();  
	CCLog("request type %d",s);  


	if (0 != strlen(response->getHttpRequest()->getTag()))   
	{  
		CCLog("%s ------>oked", response->getHttpRequest()->getTag());  
	}  

	int statusCode = response->getResponseCode();  
	CCLog("response code: %d", statusCode);  


	char statusString[64] = {};  
	sprintf(statusString, "HTTP Status Code: %d, tag = %s", statusCode, response->getHttpRequest()->getTag());  
	CCLog(statusString);  

	if (!response->isSucceed())   
	{  
		CCLog("response failed");  
		CCLog("error buffer: %s", response->getErrorBuffer());  
		return;  
	}  

	std::vector<char> *buffer = response->getResponseData(); 
	printf("Http Test, dump data: ");  
	for (unsigned int i = 0; i < buffer->size(); i++)  
	{  
		//CCLog("%c", (*buffer)[i]);//这里打印从服务器返回的数据  
		m_responseData.push_back((*buffer)[i]);
	}  
	CCLog("m_responseData:%s",m_responseData.c_str());
	printf("\n");  

} 
コード例 #9
0
void RequestTopaz::onHttpRequestCompleted(CCNode *sender, void *data)
{
    // Loading 창 끄기
    ((Loading*)Depth::GetCurPointer())->EndScene();
    
    CCHttpResponse* res = (CCHttpResponse*) data;
    
    xml_document xmlDoc;
    Network::GetXMLFromResponseData(res, xmlDoc);
    
    std::string friendKakaoId = res->getHttpRequest()->getTag();
    XmlParseResult(&xmlDoc, friendKakaoId);
}
コード例 #10
0
ファイル: HttpClientTest.cpp プロジェクト: acc85/cocos2d-x
void HttpClientTest::onHttpRequestCompleted(cocos2d::CCNode *sender, void *data)
{
    CCHttpResponse *response = (CCHttpResponse*)data;

    if (!response)
    {
        return;
    }
    
    // You can get original request type from: response->request->reqType
    if (0 != strlen(response->getHttpRequest()->getTag())) 
    {
        CCLog("%s completed", response->getHttpRequest()->getTag());
    }
    
    int statusCode = response->getResponseCode();
    char statusString[64] = {};
    sprintf(statusString, "HTTP Status Code: %d, tag = %s", statusCode, response->getHttpRequest()->getTag());
    m_labelStatusCode->setString(statusString);
    CCLog("response code: %d", statusCode);
    
    if (!response->isSucceed()) 
    {
        CCLog("response failed");
        CCLog("error buffer: %s", response->getErrorBuffer());
        return;
    }
    
    // dump data
    std::vector<char> *buffer = response->getResponseData();
    printf("Http Test, dump data: ");
    for (unsigned int i = 0; i < buffer->size(); i++)
    {
        printf("%c", (*buffer)[i]);
    }
    printf("\n");
}
コード例 #11
0
ファイル: HttpClient.cpp プロジェクト: TukekeSoft/jacos2d-x
// Poll and notify main thread if responses exists in queue
void CCHttpClient::dispatchResponseCallbacks(float delta)
{
    // CCLog("CCHttpClient::dispatchResponseCallbacks is running");
    
    CCHttpResponse* response = NULL;
    
    pthread_mutex_lock(&s_responseQueueMutex);
    if (s_responseQueue->count())
    {
        response = dynamic_cast<CCHttpResponse*>(s_responseQueue->objectAtIndex(0));
        s_responseQueue->removeObjectAtIndex(0);
    }
    pthread_mutex_unlock(&s_responseQueueMutex);
    
    if (response)
    {
        --s_asyncRequestCount;
        
        CCHttpRequest *request = response->getHttpRequest();
        CCObject *pTarget = request->getTarget();
        SEL_CallFuncND pSelector = request->getSelector();

        if (pTarget && pSelector) 
        {
            (pTarget->*pSelector)((CCNode *)this, response);
        }

		if (!request->_jsTarget.IsEmpty() && !request->_jsSelector.IsEmpty()) {

			response->flushDataToReadBuffer();
            response->assignJavaScriptObject(CLS_CCHTTPRESPONSE_ID, false);
			this->getJSCCallFunc()->callJSFunction(request->_jsTarget, request->_jsSelector, this->getJSObjInstance(), response->getJSObjInstance());
		}
        
        response->release();
    }
    
    if (0 == s_asyncRequestCount) 
    {
        CCDirector::sharedDirector()->getScheduler()->pauseTarget(this);
    }
    
}
コード例 #12
0
ファイル: HttpClient.cpp プロジェクト: jindaw/game_sources
// Poll and notify main thread if responses exists in queue
void CCHttpClient::dispatchResponseCallbacks(float delta)
{
    // CCLog("CCHttpClient::dispatchResponseCallbacks is running");
    
    CCHttpResponse* response = NULL;
    
    pthread_mutex_lock(&s_responseQueueMutex);
    if (s_responseQueue->count())
    {
        response = dynamic_cast<CCHttpResponse*>(s_responseQueue->objectAtIndex(0));
        s_responseQueue->removeObjectAtIndex(0);
    }
    pthread_mutex_unlock(&s_responseQueueMutex);
    
    if (response)
    {
        --s_asyncRequestCount;
        
        CCHttpRequest *request = response->getHttpRequest();
        CCObject *pTarget = request->getTarget();
        SEL_CallFuncND pSelector = request->getSelector();

        if (pTarget && pSelector) 
        {
            (pTarget->*pSelector)((CCNode *)this, response);
        }

        //lua
        if( request->getLuaCallback() != 0 )
        {
            ptola::script::CLuaScriptFunctionInvoker::executeHttpResponseCallback(request->getLuaCallback(), response);
        }
        
        response->release();
    }
    
    if (0 == s_asyncRequestCount) 
    {
        CCDirector::sharedDirector()->getScheduler()->pauseTarget(this);
    }
    
}
コード例 #13
0
void RequestTopaz::onHttpRequestCompletedNoEncrypt(CCNode *sender, void *data)
{
    CCHttpResponse* res = (CCHttpResponse*) data;
    char dumpData[110*110*2];
    
    // 프로필 사진 받아오기 실패
    if (!res || !res->isSucceed())
    {
        //CCLog("res failed. error buffer: %s", res->getErrorBuffer());
        return;
    }
    
    // dump data
    std::vector<char> *buffer = res->getResponseData();
    for (unsigned int i = 0 ; i < buffer->size() ; i++)
        dumpData[i] = (*buffer)[i];
    dumpData[buffer->size()] = NULL;
    
    // make texture2D
    CCImage* img = new CCImage;
    img->initWithImageData(dumpData, (int)buffer->size());
    CCTexture2D* texture = new CCTexture2D();
    texture->initWithImage(img);
    
    // set CCSprite (profile 모음 리스트에 갱신)
    int numOfList = friendList.size();
    int index = atoi(res->getHttpRequest()->getTag());
    
    ProfileSprite* psp = ProfileSprite::GetObj(friendList[index]->GetImageUrl());
    psp->SetSprite(texture);
    psp->SetLoadingDone(true);
    
    // 화면에 보이는 스프라이트 교체
    if (spriteClassScroll == NULL)
        return;
    spriteClassScroll->ChangeSprite(-888*(numOfList-index), psp->GetProfile());
    ((CCSprite*)spriteClassScroll->FindSpriteByTag(-777*(numOfList-index)))->setOpacity(255);
}
コード例 #14
0
ファイル: HttpClient.cpp プロジェクト: AojiaoZero/CrossApp
// Poll and notify main thread if responses exists in queue
void CCHttpClient::dispatchResponseCallbacks(float delta)
{
    // CCLog("CCHttpClient::dispatchResponseCallbacks is running");
    
    CCHttpResponse* response = NULL;
    
    pthread_mutex_lock(&s_responseQueueMutex);
    if (s_responseQueue->count())
    {
        response = dynamic_cast<CCHttpResponse*>(s_responseQueue->objectAtIndex(0));
        s_responseQueue->removeObjectAtIndex(0);
    }
    pthread_mutex_unlock(&s_responseQueueMutex);
    
    if (response)
    {
        --s_asyncRequestCount;
        
        CCHttpRequest *request = response->getHttpRequest();
        CAObject *pTarget = request->getTarget();
        SEL_HttpResponse pSelector = request->getSelector();

        if (pTarget && pSelector) 
        {
            (pTarget->*pSelector)(this, response);
        }
        
        response->release();
    }
    
    if (0 == s_asyncRequestCount) 
    {
        CAScheduler::getScheduler()->pauseTarget(this);
    }
    
}
コード例 #15
0
ファイル: MailMainScene.cpp プロジェクト: webhunter/iGame
void MailMainScene::requestFinishedCallback(CCNode* pSender,void *Rspdata)
{
	if (!this->ValidateResponseData(pSender,Rspdata))
	{
		return;
	}

	CCHttpResponse *response =  (CCHttpResponse*)Rspdata;
	std::vector<char> *buffer = response->getResponseData();

	std::string content(buffer->begin(),buffer->end());
	CCLog(content.c_str());

    CCDictionary * dictionary = CCJSONConverter::sharedConverter()->dictionaryFrom(content.c_str());
	int code = ((CCNumber *)dictionary->objectForKey("code"))->getIntValue();
    if (code != 200) {
        CCMessageBox("invoke web api failed!","ERROR");
        return;
    }

	std::string requestTag(response->getHttpRequest()->getTag());

	if (requestTag == "101") {
		mFriendList = dynamic_cast<CCArray *>(dictionary->objectForKey("friendList"));
		if (mFriendList==NULL)
		{
			return;
		}

		selectedindex = -1;
		mTableViewFriend->reloadData();
	} else if (requestTag == "102"){
		this->doSearchFriend();
		CCMessageBox("delete friend successfully","Success");
	}
}
コード例 #16
0
ファイル: SGHttpClient.cpp プロジェクト: caoguoping/warCraft
void SGHttpClient::requestFinishHandler(CCNode *sender, void *data)
{
    CCHttpResponse *response = (CCHttpResponse*)data;
    
    if (!response)
    {
        return;
    }
    
    int statusCode = response->getResponseCode();
    CCLog("response code: %d", statusCode);
    if (!response->isSucceed())
    {
        SGMainManager::shareMain()->getMainScene()->plat->removeConnection();
		//        弹框
        if (_delegate)
        {
            _delegate->requestFailed();
        }
        CCLog("response failed");
        CCLog("error buffer: %s", response->getErrorBuffer());
        return;
    }
    if (0 != strlen(response->getHttpRequest()->getTag()))
    {
        const char *responseTag = response->getHttpRequest()->getTag();
        CCLog("%s completed", responseTag);
        
        int rt = atoi(responseTag);
        std::vector<char> *buffer = response->getResponseData();
        int bufferSize = buffer->size();
        char *bufferchar = new char[bufferSize];
        std::copy(buffer->begin(), buffer->end(), bufferchar);
		
        switch (rt)
        {
            case MSG_HTTP_FAST_LOGIN:
            {
                this->fastLoginListener(bufferchar);
                break;
            }
            case MSG_HTTP_LOGIN:
            {
                this->loginListener(bufferchar);
                break;
            }
            case MSG_HTTP_REGISTER:
            {
                this->registerListener(bufferchar);
                break;
            }
            case MSg_HTTP_SERVERLIST:
            {
                this->serverListListener(bufferchar);
                break;
            }
            case MSG_HTTP_BING:
            {
                bindListener(bufferchar);
                break;
            }
            case MSG_HTTP_PASSWORD:
            {
                passwordListener(bufferchar);
                break;
            }
            case MSg_HTTP_LASTESTSERVER:
            {
                getlastestServer(bufferchar);
                break;
            }
            case MSG_HTTP_UPDATE_SERVER_STATE:
            {
                updateSelectServerResponse(bufferchar);
            }
                break;
            case MSG_HTTP_GET_CHANNEL_USER_ID:
            {
                rspGetChannelUserId(bufferchar);
            }
                break;
            default:
                break;
        }
		
    }
    CCUserDefault::sharedUserDefault()->setBoolForKey("pvp_tran", false);
    SGMainManager::shareMain()->getMainScene()->plat->removeConnection();
	
}
コード例 #17
0
ファイル: LoadingScene.cpp プロジェクト: JungHanter/SWMTAMA
void LoadingScene::onHttpRequestCompleted(cocos2d::CCNode *sender, void *data)
{
    CCLog("LoadingScene::onHttpRequestCompleted");
    CCHttpResponse *response = (CCHttpResponse*)data;
    
    if (!response)
    {
        return;
    }
    
    // You can get original request type from: response->request->reqType
    if (0 != strlen(response->getHttpRequest()->getTag()))
    {
        CCLog("%s completed", response->getHttpRequest()->getTag());
    }
    
    int statusCode = response->getResponseCode();
    char statusString[64] = {};
    sprintf(statusString, "HTTP Status Code: %d, tag = %s", statusCode, response->getHttpRequest()->getTag());
    //m_labelStatusCode->setString(statusString);
    CCLog("response code: %d", statusCode);
    
    if (!response->isSucceed())
    {
        CCLog("response failed");
        CCLog("error buffer: %s", response->getErrorBuffer());
        return;
    }
    
    // dump data
    std::vector<char> *buffer = response->getResponseData();
	std::string s;
    bool isDataStarted = false;
    for (unsigned int i = 0; i < buffer->size(); i++)
	{
        if( isDataStarted == false && !isspace((*buffer)[i]) )
            isDataStarted = true;
        if( isDataStarted == false) continue;
        
        s += (*buffer)[i];
    }
	CCLog("LoadingScene::onHttpRequestCompleted : buffer=%s", s.data() );
    
    if(strcmp(response->getHttpRequest()->getTag(), "URL_RECEIVE_ANIMALS") == 0)
    {
        labelLoading->setString("동물들과 교감하는중...");
        vector<ANIMALINFO> animalList;
        
        CCLog("URL_RECEIVE_ANIMALS: it comes %d", s.length());
        
        bool isAlreadyExist = false;
        map<int, Animal*>* pList = pData->getAnimalsByAccount(SceneManager::sharedSceneManager()->getUserAccountKey());
        if( pList != NULL )
            isAlreadyExist = true;
        while (s.length() != 0)
        {
            int delimIndex = s.find('|');
            string oneAnimalData;
            
            if( delimIndex != -1 )
            {
                oneAnimalData = s.substr(0, delimIndex);
                s = s.substr(delimIndex+1);
            }
            else
            {
                oneAnimalData = s;
                s = "";
            }
            
            ANIMALINFO info;
            info.name               = oneAnimalData.substr(0, oneAnimalData.find(" ") );
            oneAnimalData = oneAnimalData.substr(oneAnimalData.find(" ")+1);
            info.key                = atoi(oneAnimalData.substr(0, oneAnimalData.find(" ") ).data());
            oneAnimalData = oneAnimalData.substr(oneAnimalData.find(" ")+1);
            info.type               = (ANIMAL_TYPE)atoi(oneAnimalData.substr(0, oneAnimalData.find(" ") ).data());
            oneAnimalData = oneAnimalData.substr(oneAnimalData.find(" ")+1);
            info.level              = atoi(oneAnimalData.substr(0, oneAnimalData.find(" ") ).data());
            oneAnimalData = oneAnimalData.substr(oneAnimalData.find(" ")+1);
            info.status.sleep       = atoi(oneAnimalData.substr(0, oneAnimalData.find(" ") ).data());
            oneAnimalData = oneAnimalData.substr(oneAnimalData.find(" ")+1);
            info.status.poop        = atoi(oneAnimalData.substr(0, oneAnimalData.find(" ") ).data());
            oneAnimalData = oneAnimalData.substr(oneAnimalData.find(" ")+1);
            info.status.exp         = atoi(oneAnimalData.substr(0, oneAnimalData.find(" ") ).data());
            oneAnimalData = oneAnimalData.substr(oneAnimalData.find(" ")+1);
            info.status.fullness    = atoi(oneAnimalData.substr(0, oneAnimalData.find(" ") ).data());
            oneAnimalData = oneAnimalData.substr(oneAnimalData.find(" ")+1);
            info.status.health      = atoi(oneAnimalData.substr(0, oneAnimalData.find(" ") ).data());
            oneAnimalData = oneAnimalData.substr(oneAnimalData.find(" ")+1);
            info.status.joy         = atoi(oneAnimalData.data());
            
            CCLog("URL_RECEIVE_ANIMALS : %s %d %d %d %d %d %d %d %d %d", info.name.c_str(), info.key, info.type, info.level, info.status.sleep, info.status.poop, info.status.exp, info.status.fullness, info.status.health, info.status.joy );
            
            pData->makeDataFromAnimalInfo(SceneManager::sharedSceneManager()->getHostAccountKey(), info);
            //            char name[32] = "께이";
            //            char strMB[256] = {0,};
            //            wchar_t strUnicode[256] = {0,};
            //            memcpy(strUnicode, info.name.data(), info.name.size());
            //            wcstombs(strMB, info.name.data(), 256);
            //
            //
            //            for(int i = 0; i < info.name.size(); i++ )
            //            {
            //                CCLog("URL_RECEIVE_ANIMALS : name %d, %d, %d", name[i], strUnicode[i], strMB[i] );
            //            }
            
        }
        
        if( SceneManager::sharedSceneManager()->isFriendHome() )
        {
            InGameScene* pInGameLayer = ((InGameScene*)InGameScene::getInGameScene()->getChildByTag(INGAME));
            pInGameLayer->resetScene(SceneManager::sharedSceneManager()->getHostAccountKey());
            CCDirector::sharedDirector()->popScene();
        }
        else
        {
            if( isAlreadyExist )
            {
                CCDirector::sharedDirector()->popScene();
                CCScene* pScene = InGameScene::getInGameScene();
                ((InGameScene*)(pScene->getChildByTag(INGAME)))->resetScene(SceneManager::sharedSceneManager()->getUserAccountKey());
            }
            else
                CCDirector::sharedDirector()->replaceScene(InGameScene::scene());
        }
    }
}
コード例 #18
0
ファイル: XMLHttpRequest.cpp プロジェクト: zj831007/jsbtest
void XMLHttpRequest::onHttpRequestCompleted(cocos2d::CCNode *sender, void *data){
    readyState = 4;
    
    CCHttpResponse *response = (CCHttpResponse *)data;
    if (!response) {
        return;
    }
    
    // You can get original request type from: response->request->reqType
    if (0 != strlen(response->getHttpRequest()->getTag()))
    {
        CCLog("%s completed", response->getHttpRequest()->getTag());
    }
    
    int statusCode = response->getResponseCode();
    char statusString[64] = {};
    sprintf(statusString, "HTTP Status Code: %d, tag = %s", statusCode, response->getHttpRequest()->getTag());
    
    status = statusCode; //http status 
    
    if (!response->isSucceed())
    {
        CCLog("response failed");
        CCLog("error buffer: %s", response->getErrorBuffer());
        return;
    }
    
    // dump data
    std::string res;
    std::vector<char> *buffer = response->getResponseData();
    
    for (unsigned int i = 0; i < buffer->size(); i++)
    {
        res += ((*buffer)[i]);
    }
    
//    std::string res;
//    std::vector<char> *buffer = response->getResponseData();
//    res.clear();
//    res.assign((*buffer).begin(), (*buffer).end());
    
    responseText = res;
    

    JSBool hasAction;
    jsval temp_retval;
    
    do{
    if (JS_HasProperty(ScriptingCore::getInstance()->getGlobalContext(), ScriptingCore::getInstance()->getGlobalObject(), "onreadystatechange", &hasAction) && hasAction) {
        if(!JS_GetProperty(ScriptingCore::getInstance()->getGlobalContext(), ScriptingCore::getInstance()->getGlobalObject(), "onreadystatechange", &temp_retval)) {
            break;
        }
        if(temp_retval == JSVAL_VOID) {
            break;
        }
                
        jsval jsret;
        
        JS_CallFunctionName(ScriptingCore::getInstance()->getGlobalContext(), ScriptingCore::getInstance()->getGlobalObject(), "onreadystatechange", 0, NULL, &jsret);
    }

    }while(0);
//    jsval *retval;
//    JS_CallFunctionName(ScriptingCore::getInstance()->getGlobalContext(),
//                        ScriptingCore::getInstance()->getGlobalObject(),
//                        "onreadystatechange", NULL, NULL, retval);
}
コード例 #19
0
ファイル: RankingScene.cpp プロジェクト: ngocdu/AirHockey2
void RankingScene::onHttpRequestCompleted(CCNode *sender, void *data) {
    CCHttpResponse *response = (CCHttpResponse*)data;
    
    if (!response)
    {
        return;
    }

    if (0 != strlen(response->getHttpRequest()->getTag()))
    {
        CCLog("%s completed", response->getHttpRequest()->getTag());
    }
    
    int statusCode = response->getResponseCode();
    char statusString[64] = {0};
    sprintf(statusString, "HTTP Status Code: %d, tag = %s", statusCode,
            response->getHttpRequest()->getTag());
    
    if (!response->isSucceed())
    {
        CCLabelTTF *notConnectLabel =
        CCLabelTTF::create("Can't load Data", "BankGothic Md BT", 20);
        notConnectLabel->setPosition(ccp(w/2, h/2));
        this->addChild(notConnectLabel);
        return;
    }
    
    // dump data
    std::vector<char> *buffer = response->getResponseData();
    char * data2 = (char*)(malloc(buffer->size() *  sizeof(char)));
    int d = -1;
    printf("Http Test, dump data: ");
    for (unsigned int i = 0; i < buffer->size(); i++)
    {
        d++ ;
        data2[d] = (*buffer)[i];
    }
    data2[d + 1] = '\0';
    //-----------------------

    rapidjson::Document document;
    if(data2 != NULL && !document.Parse<0>(data2).HasParseError())
    {   
        for (rapidjson::SizeType  i = 0; i < document.Size(); i++)
        {
            Player *player = new Player(document[i]["name"].GetString(),
                                        document[i]["point"].GetInt());
            players->addObject(player);
        }
    } else {
        CCLog(document.GetParseError());
    }
    d = -1;
    CCTableView *tableView=CCTableView::create(this, CCSizeMake(700, 350));
    tableView->setDirection(kCCScrollViewDirectionVertical);
    tableView->setAnchorPoint(ccp(0, 0));
    tableView->setPosition(ccp(size.width/8, 250));
    tableView->setDelegate(this);
    tableView->setVerticalFillOrder(kCCTableViewFillTopDown);
    this->addChild(tableView, 21);
    tableView->reloadData();
}
コード例 #20
0
void EziFacebookFriend::onHttpRequestCompleted(cocos2d::CCNode *sender, void *data)
{
    
    CCHttpResponse* response = (CCHttpResponse*)data;
    
    if (!response)
    {
        CCLOG("[EziSocial Error]: No Response");
    }
    
    if (0 != strlen(response->getHttpRequest()->getTag()))
    {
        //CCLog("%s completed", response->getHttpRequest()->getTag());
    }
    
    int statusCode = response->getResponseCode();
    
    char statusString[64] = {};
    sprintf(statusString, "HTTP Status Code: %d, tag = %s", statusCode, response->getHttpRequest()->getTag());
    
    if (!response->isSucceed())
    {
        CCLog("[EziSocial Error]: response failed");
        CCLog("[EziSocial Error]: error buffer: %s", response->getErrorBuffer());
        return;
    }
    
    // Dump the data
    std::vector<char> *buffer = response->getResponseData();
    
    // Create the CCSprite from data dump...
    
    CCImage * img=new CCImage();
    img->initWithImageData(&(buffer->front()), buffer->size());
    
    // Save file for resue.
    std::string writablePath = CCFileUtils::sharedFileUtils()->getWritablePath();
    //writablePath.append(response->getHttpRequest()->getTag());
    
    std::string fileName = "";
    fileName = fileName.append(_fbID);
    fileName = fileName.append(".jpg");
    writablePath.append(fileName);
    
    //CCLOG("File Name = %s", fileName.c_str());
    
    //CCLOG("File Path = %s", writablePath.c_str());
    
    cocos2d::CCTexture2D* texture = new cocos2d::CCTexture2D();
    texture->initWithImage(img);
    
    if(texture)
    {
        _profilePic = cocos2d::CCSprite::createWithTexture(texture);
    }
    else
    {
        CCLOGERROR("[EziSocial Error]: Cannot create user profile pic from texture.");
    }
    
    img->saveToFile(writablePath.c_str());
    delete img;
    
    if (_target && _selector)
    {
        (_target->*_selector)(_profilePic, _fbID.c_str());
    }
}