zoukankan      html  css  js  c++  java
  • 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()
    }
     
  • 相关阅读:
    adb(Android Debug Bridge)安装使用教程
    Python3+smtplib+poplib+imaplib实现发送和收取邮件(以qq邮箱为例)
    Python3组播通信编程实现教程(发送者+接收者)
    Python3+ssl实现加密通信
    openssl实现双向认证教程(服务端代码+客户端代码+证书生成)
    VCG(VisualCodeGrepper)安装使用教程
    APP安全防护基本方法(混淆/签名验证/反调试)
    Android Studio打包生成APK教程
    Android Studio向项目添加C/C++原生代码教程
    Android AES加密报错处理:javax.crypto.IllegalBlockSizeException: error:1e00007b:Cipher functions:OPENSSL_internal:WRONG_FINAL_BLOCK_LENGTH
  • 原文地址:https://www.cnblogs.com/hellocby/p/2762447.html
Copyright © 2011-2022 走看看