[IOS:OC]使用NSURL发送网络请求实例

#import "ViewController.h"

@interface ViewController ()<NSURLConnectionDelegate,NSURLConnectionDataDelegate>
@property(nonatomic,strong)NSOperationQueue *queue;//在使用conn异步连接时的队列
@end

@implementation ViewController
//conn 默认是异步的  使用get请求  使用代理方法获取响应 数据以及错误
- (IBAction)get:(UIButton *)sender {
    //创建一个请求
    NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://115.29.104.29/Server.asmx/JsonDemo1"]];
    //创建连接
    NSURLConnection *conn=[NSURLConnection connectionWithRequest:request delegate:self];
    //开始连接
    [conn start];
}
- (IBAction)post:(id)sender {
    //post需要设置  使用可变的request
    NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://115.29.104.29/Server.asmx/JsonDemo1"]];
    [request setHTTPMethod:@"POST"];
    NSURLConnection *conn=[NSURLConnection connectionWithRequest:request delegate:self];
    [conn start];
}
- (IBAction)sync:(id)sender {
    //同步的get请求  使用conn的静态方法sendsync
    NSURLRequest *reques=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://115.29.104.29/Server.asmx/JsonDemo1"]];
    //使用参数获取返回错误以及响应
    NSURLResponse *res;
    NSError *error;
    NSData *data=[NSURLConnection sendSynchronousRequest:reques returningResponse:&res error:&error];
    if(error)
    {
        NSLog(@"error:%@",error.localizedDescription);
    }
    else{
        NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
    }
}
- (IBAction)async:(id)sender {
    //异步的get请求
    NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://115.29.104.29/Server.asmx/JsonDemo1"]];
    [NSURLConnection sendAsynchronousRequest:request queue:_queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
       //block
        if(connectionError)
        {
            NSLog(@"error:%@",connectionError.localizedDescription);
        }
        else{
            NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
        }
    }];
}

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    NSLog(@"服务器响应");
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    NSLog(@"error:%@",error.localizedDescription);
}

- (void)viewDidLoad {
    [super viewDidLoad];
    _queue=[[NSOperationQueue alloc]init];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

@end
时间: 2024-10-02 05:09:45

[IOS:OC]使用NSURL发送网络请求实例的相关文章

IOS发送网络请求 心得

路线: 实例化URL (网络资源) 利用 URL 建立URLReques (网络请求) 默认是get 请求 对于post 请求 需要创建请求数据体          利用 URLConnection 发送网络请求 (建立连接) 获得结果 或者: (也就是:) URL Reques Connection  HTTP   中利用  URLReques 建立网络请求方式:  GET & POST              get 请求 是 从服务器中取            post 请求 是 往服务

iOS中使用block进行网络请求回调

iOS中使用block进行网络请求回调 HttpRequest.h // // HttpRequest.h // UseBlockCallBack // // Created by Michael on 2/13/14. // Copyright (c) 2014 EIMS. All rights reserved. // #import <Foundation/Foundation.h> typedef void (^FinishBlock)(NSString *dataString); @

在安卓主线程不能发送网络请求的解决办法

第一种方法: 在主线程中加入这段代码,强制在主线程执行网络请求 if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); } 第二种方法: 利用安卓系统自带的异步执行,将网络请求的代码加入在里面 new Async

IOS 京东相关app 出现“网络请求失败,请检查您的网络设置”的解决办法

问题情况 在IOS系统下,下载安装或者更新新版的京东相关app之后,打开app直接就是“网络请求失败,请检查网络设置”,无论是数据连接还是wifi都试了,都是网络请求失败. 然而打开无线局域网-使用无线局域网与蜂窝移动的应用…却找不到手机京东这个对应的app.这是什么原因呢???!!卸载重装还是这个老样子! 解决办法 1.先进入那个“使用无线局域网与蜂窝移动的应用”的界面,随便把某个应用的的联网权限改成别的. 2.再次打开京东这个app,系统就会提示你选择联网权限,选择允许. 3.回去“使用无线

IOS开发之自动布局显示网络请求内容

在上一篇博客中详细的介绍了IOS开发中的相对布局和绝对布局,随着手机屏幕尺寸的改变,在App开发中为了适应不同尺寸的手机屏幕,用自动布局来完成我们想要实现的功能和效果显得尤为重要.本人更喜欢使用相对布局.在下面要学习的例子中暂且先用我们的StoryBoard来设置我们组件的约束,以后会在代码中给我们的元素新建约束.iPhone4,5和将要发布的iPhone6的屏幕的大小都不一样,所以屏幕的适配是我们搞App开发必须要考虑的问题. 我们要完成一个什么例子呢,先上两张程序运行最终的结果图,之后看着图

[小程序]微信小程序获取input并发送网络请求

1. 获取输入框数据wxml中的input上增加bindinput属性,和方法值在js部分定义与之对应的方法,只要在输入的时候,数据就会绑定调用到该方法,存入data属性变量中 2. 调用get请求发起网络请求调用wx.request发起网络请求 3.调用微信Toast接口展示结果 4.按钮绑定bindtap属性,当按钮点击的时候会调用对应的方法 index.wxml部分 <view class="indexInput"> <input maxlength="

Hbuilder MUI里面使用java.net.URL发送网络请求,操作cookie

1. 引入所需网络请求类: var URL = plus.android.importClass("java.net.URL"); var URLConnection = plus.android.importClass("java.net.URLConnection"); var BufferedReader = plus.android.importClass("java.io.BufferedReader"); var InputStrea

python发送网络请求

1.使用urllib模块 get请求: res = urlopen(url) from urllib.request import urlopen url = 'http://www.nnzhp.cn' print(urlopen(url))#返回http.client.HTTPResponse object at 0x00000235BA25A160 print(urlopen(url).read().decode())#返回get到的页面的源代码 # decode是将base类型转为enco

go tcp发送网络请求

//发送http请求 package main import ( "fmt" "net" "io" ) func main () { //使用Dial建立连接 conn, err := net.Dial("tcp", "www.baidu.com:80") if err != nil { fmt.Println("error dialing", err.Error()) return }