プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。

C#にて、WebRequest.Create(url);を
行うと、urlがhttp等で始まらない場合、例外を投げますが、
渡されたurlが『www.xxxxxx.jp』などのようにhttpを省略した
形式で渡されないよう、スキームを付けたurlに変換するための
方法を教えてください。

単に文字列を頭から見て、httpでなければ"http://"を追加…というのではなく、
専用のメソッドや手法を教えていただければと思います。

サイトを探せば見つかるとは思ったのですが、少し急ぎのため、
こちらで質問させていただきました。

よろしくお願いいたします。

A 回答 (2件)

もうちょい詰めるなら……



 Uri uri = null;

 if (Uri.TryCreate(Url, UriKind.Absolute, out uri) == false)
  uri = new UriBuilder("http", Url).Uri;

ってところでしょうか。
# Urlがstring型。

「http://」を付与してもURLにならない文字列を渡した場合にどうなるかは不明です。
https://とかftp://とか…URIとして正当だとプロトコルの変更はされませんけどね。
TryCreate()が成功した後のuri.Schemeプロパティで判定してよろしく処理してくださいな。

この回答への補足

ご回答、ありがとうございます。

返事が遅れ、大変申し訳ありません。

教えていただきました方法ですと、"http"なのか、
"https"なのか、はたまた"ftp"なのかの識別ができないと思われます。

それをできるようにするための質問なのですが…。

頂いた方法だと、ただ単に文字列として"http://"を付け加えるだけでも
同じ結果が得られると思います。

よろしくお願いいたします。

補足日時:2014/02/21 08:35
    • good
    • 0

>サイトを探せば見つかるとは思ったのですが、少し急ぎのため、


>こちらで質問させていただきました。

回答待つより検索した方が早いと思いますけどねぇ……。

http://msdn.microsoft.com/ja-jp/library/system.u …

 UriBuilder myUri = new UriBuilder("http", "oshiete.goo.ne.jp/category/205");
 Uri Test = myUri.Uri;

こんなところでしょうか。
UriBuilderのコンストラクタの第2引数、ホスト名だけではなくても動作してくれたようです。
# Windows7&.NET Framework 4.0で確認。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!