質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

2737閲覧

指定URLのhtmlを表示させたい

agep31

総合スコア29

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/12/17 12:40

###前提・実現したいこと
指定したURLのhtmlをコンソール上に表示させたいのですが、エラーが出てしまい、困っています。

###発生している問題・エラーメッセージ

Argument labels '(with:, CompletionHandler:)' do not match any available overloads

###該当のソースコード

swift

1import UIKit 2 3class ViewController: UIViewController { 4 5 @IBOutlet weak var webview: UIWebView! 6 7 func loadURL(){ 8 9 let requestURL: URL = URL(string: "https://www.google.co.jp")! 10 11 let urlRequest = URLRequest(url: requestURL) 12 let session = URLSession.shared 13 14 let task = session.dataTask(with: urlRequest, CompletionHandler: { (data, response, error) -> Void in }) 15 //ここでエラーが発生 16 17 } 18 override func viewDidLoad() { 19 super.viewDidLoad() 20 21 // Do any additional setup after loading the view, typically from a nib. 22 loadURL() 23 } 24 25 override func didReceiveMemoryWarning() { 26 super.didReceiveMemoryWarning() 27 // Dispose of any resources that can be recreated. 28 } 29 30 31} 32

###補足情報(言語/FW/ツール等のバージョンなど)
xcode8.2
Swift version 3.0.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

以下の書き方でhttps://www.google.co.jpのサイトだとエラーになりますがhttp://www.apple.comだとHTMLが取得できますね。

swift

1import UIKit 2 3class ViewController: UIViewController { 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 8 let url = URL(string: "http://www.apple.com")! 9 let request = URLRequest(url: url) 10 let config = URLSessionConfiguration.default 11 let session = URLSession(configuration: config, delegate: nil, delegateQueue: OperationQueue.main) 12 13 let task = session.dataTask(with: request) { data, response, error in 14 15 16 if let _ = response, let data = data { 17 18 print(NSString(data: data, encoding: String.Encoding.utf8.rawValue)!) 19 20 } else { 21 print(error!) 22 } 23 } 24 task.resume() 25 } 26}

投稿2016/12/17 13:48

_Kentarou

総合スコア8490

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

agep31

2016/12/17 15:10

ごめんなさい、xcodeのアップデートで、通常ではhttp通信ができない設定になっていました。設定を変えたので、他のサイトからもhtmlを取得することができました。session.dataTaskについてご教授ください。
_Kentarou

2016/12/17 23:13

dataTaskはURLSessionのメソッドでrequestを渡してその結果をブロックで受け取るというものです。 ※ 返される値は(Data?, URLResponse?, Error?)です。 定義は以下の様にされています。 func dataTask(with request: URLRequest, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Swift.Void) -> URLSessionDataTask メソッドの戻りとして返されるURLSessionDataTaskに対して継承元(URLSessionTask)のメソッドresume()を呼んで処理を実行しています。
agep31

2016/12/20 05:14

ありがとうございました!
guest

0

CompletionHandlerの頭は小文字です。→ completionHandler

投稿2016/12/17 13:22

fromageblanc

総合スコア2724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

agep31

2016/12/17 13:38

ご回答ありがとうございます。エラーはなくなりました。 この後、htmlソースを取得するのにはどうすれば良いのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問