環境
クライアント
iOS 6.1
Xcode 4.6
サーバ
CentOS 6
PHP 5.3
どうやらWebViewにカスタムヘッダーをつけるにはWebViewを継承する必要があるっぽい?ひとまずそれでやってみよう。
アプリ側
メニューからFile => New => Fileを選択。
Objective-C classを選択する。
Classに「ExWebView」(任意)、Subclass ofに継承元クラスの「UIWebView」を入力。次の画面で保存先に任意のディレクトリを選んでCreateを選択。
ExWebView.h, ExWebView.mが作成される。いつも思うけど、クラス一つ作るのに.h, .mファイルが必要っていう仕様はめんどくさい。
ExWebView.h
1 2 3 4 5 |
#import <UIKit/UIKit.h> @interface ExWebView : UIWebView @end |
ExWebView.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#import "ExWebView.h" @implementation ExWebView - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // Initialization code } return self; } - (void)loadRequest:(NSURLRequest *)request { NSMutableURLRequest *mRequest = (NSMutableURLRequest *)[request mutableCopy]; // カスタムヘッダーを追加 [mRequest setValue:@"moshimoshi, oredayo ore!" forHTTPHeaderField:@"App-MyParameter"]; [super loadRequest:mRequest]; } @end |
こんな感じにViewController.xibにUIWebViewを配置。
右上のShow the Identity Inspectorを開いてClassを今回作成した「ExWebView」に変更する。
ViewController.mでWebViewにURLを渡してロードする。
1 2 3 4 5 6 7 8 9 10 |
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSString *appUrl = @"http://harada-atsushi.info/header_check.php"; [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:appUrl]]]; self.webView.scalesPageToFit = YES; self.webView.delegate = self; } |
サーバ側
次にサーバ側でヘッダーを出力する処理を作る。WEB上でPHPが動く状態になっている必要があります。
header_check.php
1 2 3 4 5 6 |
<?php //HTTPリクエストヘッダーを全て出力する $headers = getallheaders(); foreach ($headers as $key => $value) { echo $key.": ".$value."<br />"; } |
アプリを起動したらこんな感じに表示される。
カスタムヘッダーの「App-MyParameter」に「moshimoshi, oredayo ore!」という値がセットされていることを確認。
出来ましたね!
それにしてもネコワーキングスペースはいいところです。
もっとオレの仕事を邪魔してくれてもいいんだぜ!
The following two tabs change content below.

原田 敦
日本CAWのエンジニア。もふもふ部の部長。得意分野はRuby on Railsを使った小規模WEBアプリケーションを高速で開発すること。週末の楽しみは一人お菓子パーティー。三度の飯より小動物をもふもふするのが好きです。

最新記事 by 原田 敦 (全て見る)
- Rails Engineでブログ機能追加するgemを作る - 2015年3月15日
- WEBエンジニア一人だけでサービスを作りきる方法-夫婦のための自動ごはん予定お知らせサービス「GoHaaan」制作でやったこと - 2015年3月7日
- CentOS6でMariaDBのDynamic Columnsを試してみた - 2015年2月28日