2011-09-28 66 views

Trả lời

291

Hãy thử này để xác nhận HTTP URL (uriName là URI bạn muốn kiểm tra):

Uri uriResult; 
bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult) 
    && uriResult.Scheme == Uri.UriSchemeHttp; 

Hoặc, nếu bạn muốn chấp nhận cả HTTP và HTTPS URL là hợp lệ (mỗi bình luận J0e3gan của):

Uri uriResult; 
bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult) 
    && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps); 
+6

này nên đọc uriResult.Scheme thay vì uriName.Scheme? Tôi đang sử dụng quá tải để TryCreate mà mất String thay vì Uri là tham số đầu tiên của nó. –

+7

Bạn có thể muốn thêm nhiều điều kiện hơn vào uriResult.Scheme == ... Cụ thể https. Nó phụ thuộc vào những gì bạn cần, nhưng sự thay đổi nhỏ này là tất cả những gì tôi cần để nó hoạt động hoàn hảo cho tôi. – Fiarr

+8

Để rõ ràng theo nhận xét của @ Fiarr, "thay đổi nhỏ" cần thiết để tính tiền cho HTTPS ngoài các URL HTTP là: 'bool result = Uri.TryCreate (uriName, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri .UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps; ' – J0e3gan

4

Sau Uri.TryCreate bạn có thể kiểm tra Uri.Scheme để xem liệu HTTP đó có.

0

này sẽ quay trở lại bool:

Uri.IsWellFormedUriString(a.GetAttribute("href"), UriKind.Absolute) 
+1

Tôi nghĩ rằng OP được đề cập cụ thể, anh ta không thích Uri.IsWellFormedUriString vì nó mang lại sự thật cho đường dẫn tệp. Bạn có giải pháp cho vấn đề này không? – Isantipov

0
Uri uri = null; 
if (!Uri.TryCreate(url, UriKind.Absolute, out uri) || null == uri) 
    return false; 
else 
    return true; 

Ở đây url là chuỗi bạn phải kiểm tra.

14
public static bool CheckURLValid(this string source) 
    { 
     Uri uriResult; 
     return Uri.TryCreate(source, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp; 
    } 

Cách sử dụng:

string url = "htts://adasd.xc."; 
if(url.CheckUrlValid()) 
{ 
    //valid process 
} 
+0

Điều này dường như không xử lý các url www. IE: www.google.com được hiển thị là không hợp lệ. –

+4

@ZauberParacelsus "www.google.com" không hợp lệ. Ý nghĩa của URL phải bắt đầu bằng "http", "ftp", "tệp", v.v. phải là "http: // www.google.com" không có khoảng trắng –

53

Phương pháp này hoạt động tốt cả trong http và https. Chỉ cần một dòng :)

if (Uri.IsWellFormedUriString("https://www.google.com", UriKind.Absolute)) 

MSDN: IsWellFormedUriString

+4

Điều này sẽ trả về true cho URI không phải HTTP (tức là [bất kỳ chương trình nào khác ] (https://msdn.microsoft.com/en-us/library/system.uri.scheme (v = vs.110) .aspx) chẳng hạn như 'file: //' hoặc 'ldap: //'. Giải pháp này nên được kết hợp với một kiểm tra đối với đề án - ví dụ 'nếu (uri.Scheme! = Uri.UriSchemeHttp && uri.Scheme! = Uri.UriSchemeHttps) ...' – Squiggle

+4

Không 17 kiểm tra ở đây: https: // dotnetfiddle. net/XduN3A – Lee

Các vấn đề liên quan