ios cfnetwork发送http请求简单实例

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 22:09 点击:

static CFRunLoopRef backgroundRunLoop;
static pthread_cond_t cond=PTHREAD_COND_INITIALIZER;
static pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;

void releaseContext(void* infoPtr)
{
 
    CFRelease(infoPtr);
}
void* retainContext(void* infoPtr)
{

    CFRetain(infoPtr);
    return infoPtr;
}
void cancelTheStream(CFReadStreamRef readStream)
{
    CFReadStreamUnscheduleFromRunLoop(readStream, CFRunLoopGetCurrent(), kCFRunLoopCommonModes);
    CFReadStreamClose(readStream);
    CFRelease(readStream);
}
void* threadMain(void* info)
{
    pthread_mutex_lock(&mutex);
    backgroundRunLoop=CFRunLoopGetCurrent();
    CFRunLoopSourceContext context = {0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
    CFRunLoopSourceRef source = CFRunLoopSourceCreate(kCFAllocatorDefault, 0, &context);
    CFRunLoopAddSource(CFRunLoopGetCurrent(), source, kCFRunLoopDefaultMode);
    pthread_cond_signal(&cond);
    pthread_mutex_unlock(&mutex);
    CFRunLoopRun();
}
void createThread(void)
{
    pthread_t threadID;
    pthread_create(&threadID, NULL,threadMain, NULL);
}

void getResponse(CFReadStreamRef readStream,CFStreamEventType event,void* infoPtr)
{
    if(event==kCFStreamEventEndEncountered){
//        CFHTTPMessageRef response=CFHTTPMessageCreateEmpty(kCFAllocatorDefault, NO);
        CFHTTPMessageRef response=(CFHTTPMessageRef)infoPtr;

        UInt32 statusCode=CFHTTPMessageGetResponseStatusCode(response);
        CFDataRef responseData=CFHTTPMessageCopyBody(response);
 
        UInt32 count=CFDataGetLength(responseData);
        CFStringRef responseJson=CFStringCreateWithBytes(kCFAllocatorDefault, CFDataGetBytePtr(responseData), count, kCFStringEncodingUTF8, YES);
        CFRelease(responseJson);
        CFRelease(responseData);
        cancelTheStream(readStream);
        return;
    }
    if(event==kCFStreamEventHasBytesAvailable){
        UInt8 buffer[100];
        int length=CFReadStreamRead(readStream, buffer,100);
        CFHTTPMessageAppendBytes((CFHTTPMessageRef)infoPtr, buffer, length);
        return;
    }
    if(event==kCFStreamEventErrorOccurred){
        //CFStreamError error=CFReadStreamGetError(readStream);
        cancelTheStream(readStream);
        return;
    }
    return;
}

@implementation AppDelegate

@synthesize window = _window;
@synthesize versionKey;
@synthesize messageQueueKey;
- (void)dealloc
{
    [_window release];
    [super dealloc];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //create the url
    CFStringRef urlString=CFSTR("your url");
  

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Lexical or Preprocessor Issue 'xxx.h
      • ios学习笔记(二)xcode 4.3.2下实现基本交互
      • ios版本的helloworld
      • iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
      • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
      • IOS类似iphone通讯录TableView的完整demo【附源码】
      • UITableView一些方法
      • [iPhone中级]iPhone团购信息客户端的开发 (二)
      • iphone(object-c)内存管理(1)
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1