#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

[self httpSendDataWithUrl:@"http://127.0.0.1/php/login.php" andUserName:@"zhang&san" andPsw:@"zhang"];

}

-(void)httpSendDataWithUrl:(NSString*)url andUserName:(NSString*)username andPsw:(NSString*)psw

{

//get请求的时候URL中的汉字空格,特殊字符不会进行编码,如果不自行编码,会出现错喔

NSString *name=username;

//oc 自带方法只会对空格汉字进行转义,不会转义特殊字符

name=[name stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

//对特殊字符进行转义

name=[self encodeToPercentEscapeString:name];

NSString *pwd=psw;

NSString *httpUrl=url;

//----------------------Get方法的URL-------------

//    NSString *str=[NSString stringWithFormat:@"?username=%@&password=%@",name,pwd];

//    httpUrl=[httpUrl stringByAppendingString:str];

//    NSURLRequest*request=[NSURLRequest requestWithURL:[NSURL URLWithString:httpUrl]];

//----------------------Get方法的URL-------------

//----------------------Post方法的URL和请求头-----------

NSMutableURLRequest *mRequest=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:httpUrl]];

mRequest.HTTPMethod=@"post";

NSString *strBody=[NSString stringWithFormat:@"username=%@&password=%@",name,pwd];

mRequest.HTTPBody=[strBody dataUsingEncoding:NSUTF8StringEncoding];

//----------------------Post方法的URL和请求头-----------

[NSURLConnection sendAsynchronousRequest:mRequest queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

if (!connectionError) {

NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;

if (httpResponse.statusCode == 200) {

NSError *error=nil;

id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];

if (error) {

NSLog(@"json解析错误!!!!!!");

}

else

{

NSLog(@"%@",json);

}

}else{

NSLog(@"服务器内部错误");

}

}else{

NSLog(@"请求错误%@",connectionError);

}

}];

}

//进行url编码 (但是不对汉字和空格进行编码)

- (NSString *)encodeToPercentEscapeString: (NSString *) input

{

NSString *outputStr = (NSString *) CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)input,NULL,(CFStringRef)@"!*'();:@&=+ $,/?%#[]",kCFStringEncodingUTF8));

return outputStr;

}

//url解码

- (NSString *)decodeFromPercentEscapeString: (NSString *) input

{

return [input

stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding] ;

}

@end

post NSURLConnection请求网络数据的更多相关文章

  1. Android 手机卫士--构建服务端json、请求网络数据

    本文地址:http://www.cnblogs.com/wuyudong/p/5900384.html,转载请注明源地址. 数据的传递 客户端:发送http请求 http://www.oxx.com/ ...

  2. Android - 使用Volley请求网络数据

    Android - 使用Volley请求网络数据 Android L : Android Studio 14 个人使用volley的小记,简述使用方法,不涉及volley源码 准备工作 导入Volle ...

  3. react-native 项目实战 -- 新闻客户端(4) -- 请求网络数据

    1.Home.js /** * 首页 */ import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Te ...

  4. HttpURLConnection请求网络数据的Post请求

    //--------全局变量----------- //注册Url    private String urlPath="http://101.200.142.201:8080/VideoP ...

  5. HttpURLConnection请求网络数据

    //使用线程 new Thread(){            public void run() {                try {                    //先创建出了一 ...

  6. IOS开发中使用AFNetworking请求网络数据

    1.把AFNetworking的文件拖放到项目中(注意不同的版本方法不一样,本历程基于版本2013): 2.使用#import "AFNetworking.h"命令把AFNetwo ...

  7. angularjs $http请求网络数据并展示

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. HttpClient请求网络数据的Post请求

    new Thread(){            public void run() {                                try { //获得输入框内容          ...

  9. 解决Volley请求网络数据返回的数据乱码

    本人可参考http://tieba.baidu.com/p/4039693566 以往一般我们如下写就可以了 StringRequest request=new StringRequest(url, ...

随机推荐

  1. Python 安装easy_install详解

    easy_install 真的特别方便.我之前安装pip.wheel.bs4.requests等都是用python setup.py install 安装,操作步骤还不算很烦(但是对比easy_ins ...

  2. 如何在linux环境下搭建github环境

    首先安装github # yum install git 完成之后 https://help.github.com/articles/generating-ssh-keys/#platform-lin ...

  3. Js对map的操作

    var map = {}; // 赋值 var key = "key1"; var value = "value1"; map[key] = value; // ...

  4. CSS3学习(圆角、图片、阴影、背景、渐变、文本、字体、2D、3D、过渡等)

    matrix CSS3 1.  圆角 border-radius:边框圆角的圆角半径 四个值:第一个值为左上角,第二个值为右上角,第三个值为右下角,第四个值为左下角. 三个值:第一个值为左上角, 第二 ...

  5. 浅谈ARP协议以及应用

    0. 前言 本章主要简单的介绍ARP的协议格式,主机如何发送和处理ARP报文,以及免费ARP. 1. ARP协议原理 ARP,全称Address Resolution Protocol,地址解析协议, ...

  6. 常见input输入框 点击 发光白色外阴影 focus

    先看看具体实现的效果 第一就是点击input 实现的效果 默认谷歌点击input是蓝色边框 去掉用outline:0;  实现效果用focus  默认状态的边框颜色一般较重 如border:1px s ...

  7. Node+Express+node-mysql 实战于演习 全套mysql(增删改查)

    最近这段时间研究Node感觉不错,自己做了一个增删改查,虽然有些简陋,但是思想是想通的,其实所有项目都是增删改查,有助于初学者快速掌握Node 首先 本实例展示的是基于Node+Express+nod ...

  8. Windows操作技巧 之二(持续更新)

     定时自动关机 shutdown -s -t 3600 shutdown [/i | /l | /s | /r | /g | /a | /p | /h | /e] [/f /m \\computer] ...

  9. 在GridView隐藏字段

    在GridView中隐藏一字段,方便这条记录的处理,同时隐藏一个Button实现点击这条记录时的处理 1.绑定 <asp:TemplateField>                    ...

  10. 第2月第24天 coretext 行高

    1.NSMutableAttributedString 行高 NSMutableAttributedString *attributedString = [[NSMutableAttributedSt ...