ios网络请求代码

隐藏了真实的服务器IP 1、采用CFHTTPMessage等

 
 
 
    CFURLRef myWebserverURLRef = CFURLCreateWithString(kCFAllocatorDefault, CFSTR("http://192.168.0.1234"), NULL);
    if(myWebserverURLRef != NULL)
    {
        // Create the HTTP message
        CFHTTPMessageRef theMessageRef = CFHTTPMessageCreateRequest(kCFAllocatorDefault, CFSTR("POST"), myWebserverURLRef, kCFHTTPVersion1_1);
        if(theMessageRef != NULL)
        {
            // Set useful headers
            CFHTTPMessageSetHeaderFieldValue(theMessageRef, CFSTR("Accept"), CFSTR("application/xml;text/vnd.wap.wml;text/*,image/jpeg"));
            CFHTTPMessageSetHeaderFieldValue(theMessageRef, CFSTR("Content-type"), CFSTR("application/html"));
            CFHTTPMessageSetHeaderFieldValue(theMessageRef, CFSTR("Host"),CFSTR("192.168.0.1:1234"));
            CFHTTPMessageSetHeaderFieldValue(theMessageRef, CFSTR("Connection"),CFSTR("Close"));
            CFHTTPMessageSetHeaderFieldValue(theMessageRef, CFSTR("Accept-Charset"),CFSTR("utf-8;q=0.7,*;q=0.7"));
            CFHTTPMessageSetHeaderFieldValue(theMessageRef, CFSTR("Content-Length"),CFSTR("688"));
 
 
            // The body
            NSString* filepath = [[NSString alloc] initWithFormat:@"%@/body.txt",[[NSBundle mainBundle] bundlePath]];
            NSData *body = [NSData dataWithContentsOfFile:filepath];
            CFHTTPMessageSetBody(theMessageRef, (CFDataRef)body);
 
 
            // Create the CFReadStreamRef
            streamRef = CFReadStreamCreateForHTTPRequest(kCFAllocatorDefault, theMessageRef);
            if(streamRef != NULL)
            {            
                if(true)
                {
 
                    int myHTTPSProxyPortNumber = 80;
                    CFTypeRef keys[2], values[2];
                    keys[0] = kCFStreamPropertyHTTPProxyHost;
                    values[0] = CFSTR("10.0.0.172");
                    keys[1] = kCFStreamPropertyHTTPProxyPort;
                    values[1] = CFNumberCreate(NULL, kCFNumberSInt32Type, &myHTTPSProxyPortNumber);
                    CFDictionaryRef proxyDict = CFDictionaryCreate(NULL, keys, values, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
                    CFReadStreamSetProperty(streamRef, kCFStreamPropertyHTTPProxy, proxyDict);
                }
                CFStreamClientContext streamcontext = {0, self, NULL, NULL, NULL};
                CFOptionFlags eventflags = kCFStreamEventOpenCompleted | kCFStreamEventHasBytesAvailable 
                | kCFStreamEventEndEncountered | kCFStreamEventErrorOccurred;
 
                if (!CFReadStreamSetClient(streamRef, eventflags, ReadStreamClientCallBack, &streamcontext))
                {
 
                    return ;
                }
 
                CFReadStreamScheduleWithRunLoop(streamRef, CFRunLoopGetCurrent(), kCFRunLoopCommonModes);
 

2、采用 NSURL

 
 
    NSURL *url = [NSURL  URLWithString:@"http://192.168.0.1:1234/"];
    NSMutableURLRequest *request = [NSMutableURLRequest  requestWithURL:url];
    [request setURL: url ];
    NSString* filepath = [[NSString alloc] initWithFormat:@"%@/body.txt",[[NSBundle mainBundle] bundlePath]];
    NSData *body = [NSData dataWithContentsOfFile:filepath];
    [filepath release];
 
    [request setHTTPBody: body];
    [request setHTTPMethod: @"POST"];
 
//特别感谢xuepomh指正
    [request setValue:@"Close" forHTTPHeaderField:@"Connection"];
    [request setValue:@"192.168.0.1:1234" forHTTPHeaderField:@"Host"];
    [request setValue:@"688" forHTTPHeaderField:@"Content-Length"];
   NSURLConnection *urlConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:true];
 
 

3\socket

 
 
 
connect()
send()
while(1)
{
recv()
}
 
posted @ 2012-11-09 13:21  hellocby  阅读(2153)  评论(0编辑  收藏  举报