Home  >  Article  >  Backend Development  >  cocos2d-x3.0之请求网络(php服务器)

cocos2d-x3.0之请求网络(php服务器)

WBOY
WBOYOriginal
2016-06-23 13:45:55877browse

HelloWorldScene.h

#ifndef __HELLOWORLD_SCENE_H__#define __HELLOWORLD_SCENE_H__#include "cocos2d.h"#include "network\HttpClient.h"#include "cocos-ext.h"class HelloWorld : public cocos2d::Layer{public:    // there's no 'id' in cpp, so we recommend returning the class instance pointer    static cocos2d::Scene* createScene();    // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone    virtual bool init();        // a selector callback    void menuCloseCallback(cocos2d::Ref* pSender);        // implement the "static create()" method manually    CREATE_FUNC(HelloWorld);	void onHttpRequestComplete(cocos2d::network::HttpClient *pSender, cocos2d::network::HttpResponse *pResponse);	void onHttpPostComplete(cocos2d::network::HttpClient *pSender, cocos2d::network::HttpResponse *pResponse);};#endif // __HELLOWORLD_SCENE_H__

HelloWorldScene.cpp

#include "HelloWorldScene.h"USING_NS_CC;using namespace network;Scene* HelloWorld::createScene(){    // 'scene' is an autorelease object    auto scene = Scene::create();        // 'layer' is an autorelease object    auto layer = HelloWorld::create();    // add layer as a child to scene    scene->addChild(layer);    // return the scene    return scene;}// on "init" you need to initialize your instancebool HelloWorld::init(){    //////////////////////////////    // 1. super init first    if ( !Layer::init() )    {        return false;    }        Size visibleSize = Director::getInstance()->getVisibleSize();    Vec2 origin = Director::getInstance()->getVisibleOrigin();    /////////////////////////////    // 2. add a menu item with "X" image, which is clicked to quit the program    //    you may modify it.    // add a "close" icon to exit the progress. it's an autorelease object    auto closeItem = MenuItemImage::create(                                           "CloseNormal.png",                                           "CloseSelected.png",                                           CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));	   /*auto closeItem = MenuItemImage::create(                                           "CloseNormal.png",                                           "CloseSelected.png",										   [](Object *sender)	   {		    #if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT)				MessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");				return;			#endif				Director::getInstance()->end();			#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)				exit(0);			#endif	   });*/    	closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 ,                                origin.y + closeItem->getContentSize().height/2));    // create menu, it's an autorelease object    auto menu = Menu::create(closeItem, NULL);    menu->setPosition(Vec2::ZERO);    this->addChild(menu, 1);    /////////////////////////////    // 3. add your codes below...    // add a label shows "Hello World"    // create and initialize a label        auto label = Label::createWithTTF("Hello World", "fonts/Marker Felt.ttf", 24);        // position the label on the center of the screen    label->setPosition(Vec2(origin.x + visibleSize.width/2,                            origin.y + visibleSize.height - label->getContentSize().height));    // add the label as a child to this layer    this->addChild(label, 1);    // add "HelloWorld" splash screen"    auto sprite = Sprite::create("HelloWorld.png");    // position the sprite on the center of the screen    sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));    // add the sprite as a child to this layer    this->addChild(sprite, 0);        return true;}void HelloWorld::menuCloseCallback(Ref* pSender){//#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT)//	MessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");//    return;//#endif////    Director::getInstance()->end();////#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)//    exit(0);//#endif	HttpRequest *request = new HttpRequest;	request->setUrl("http://127.0.0.1/test2.php");	request->setRequestType(HttpRequest::Type::GET);	request->setResponseCallback(this, httpresponse_selector(HelloWorld::onHttpRequestComplete));	request->setTag("GET1");	HttpClient::getInstance()->send(request);	request->release();	//HttpRequest* request = new HttpRequest();   //   request->setUrl("http://127.0.0.1/test.php");   //   request->setRequestType(HttpRequest::Type::POST);   //   request->setResponseCallback(this, httpresponse_selector(HelloWorld::onHttpPostComplete));                 //const  char* postData = "username=zwcwu&password=123456";     // request->setRequestData(postData,strlen(postData) );     //      //      // request->setTag("POST1");     // HttpClient::getInstance()->send(request);     // request->release();}void HelloWorld::onHttpRequestComplete(cocos2d::network::HttpClient *pSender, cocos2d::network::HttpResponse *pResponse){	if(!pResponse)	{		log("response is null", pResponse);		return;	}	if(!pResponse->isSucceed())	{		log("response failed, %s", pResponse->getErrorBuffer());		return;	}	long statusCode = pResponse->getResponseCode();	log("responseCode:%ld", statusCode);	std::vector<char> *buffer = pResponse->getResponseData();	std::string buf(buffer->begin(), buffer->end());	log("get requestData:%d,%s", buf.length(), buf.c_str());}void HelloWorld::onHttpPostComplete(cocos2d::network::HttpClient *pSender, cocos2d::network::HttpResponse *pResponse){	if(!pResponse)	{		log("response is null", pResponse);		return;	}	if(!pResponse->isSucceed())	{		log("response failed, %s", pResponse->getErrorBuffer());		return;	}	long statusCode = pResponse->getResponseCode();	log("responseCode:%ld", statusCode);	std::vector<char> *buffer = pResponse->getResponseData();	std::string buf(buffer->begin(), buffer->end());	log("get requestData:%s", buf.c_str());}</char></char>

test.php

                 <?php if(isset($_POST["username"]) && isset($_POST["password"]))           {  			 echo $_POST["username"];             if($_POST["username"]=="zwcwu" && $_POST["password"]=="123456")               {                   echo "Login Success"; //return to client               }               else               {  				echo "Login Failed"; //return to client               }           }           else           {               echo "No Username or Password"; //return to client           }           ?>          

test2.php

<?php echo "WC"?>


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn