# aardio 范例: HTTP 状态码、错误代码检测 - aardio



```aardio
//错误码检测 
import win.ui;
/*DSG{{*/
var winform = win.form(text="HTTP 状态码、错误代码检测 - aardio";right=485;bottom=347)
winform.add(
btnCheck={cls="button";text="检测";left=393;top=30;right=455;bottom=56;anchors={top=1;right=1};z=2};
editResult={cls="richedit";left=10;top=62;right=473;bottom=341;anchors={left=1;top=1;right=1;bottom=1};edge=1;font=LOGFONT(name='Microsoft Sans Serif');hscroll=1;link=1;multiline=1;vscroll=1;wrap=1;z=3};
editUrl={cls="edit";text="http://eu.httpbin.org/status/402";left=43;top=32;right=387;bottom=54;anchors={top=1;right=1;bottom=1};edge=1;multiline=1;z=1};
static={cls="static";text="请输入网址、或直接输入 HTTP 状态码、错误代码:";left=12;top=9;right=299;bottom=25;anchors={top=1;right=1;bottom=1};transparent=1;z=4}
)
/*}}*/

//开启自动完成
winform.editUrl.autoComplete(6/*_SHACF_URLALL*/)

import inet.url;
import inet.errorMessage;
winform.btnCheck.oncommand = function(id,event){
	
	var url = winform.editUrl.text;
	if(! ..inet.url.is(url) ){
		if( tonumber(url) ){
			import inet.httpStatusCode;
			winform.editResult.text = inet.httpStatusCode[tonumber(url) ] || inet.errorMessage[tonumber(url)]  || "未知错误代码"
			return;
		}
		winform.msgboxErr("请输入正确的网址");
		winform.editUrl.setFocus(0,-1);
		return;
	}
	
	//禁用按钮,避免重复点击
	winform.btnCheck.disabled = true;
	winform.editResult.text = "请稍候,正在连接......." 
	
	winform.editResult.text = thread.invokeAndWait(
		function(url){
			import inet.http; 
			import inet.httpStatusCode; 
			import inet.errorMessage;
			
			//创建http对象
			var http = inet.http(); 
			if( !http.beginRequest( url,"HEAD",,,0x200000/*_INTERNET_FLAG_NO_AUTO_REDIRECT*/ ) ) {
				http.close();
				return "无效的请求"; 
			} 
			
			//发送请求
			var ret,errMsg,errCode = http.send(); 
			if(http.statusCode){  
				var msg = string.concat( "返回状态码：", http.statusCode + '\r\n' 
					, inet.httpStatusCode[http.statusCode] ,'\r\n\r\n',http.readHeader() ,);
					
				http.close();
				return msg;
			}
			else {
				http.close();
				
				if( type(errCode) == type.number ){
					var msg = "请求失败,错误代码：" + errCode + '\r\n'
						+ ( inet.errorMessage[errCode] : "")
					
					if( errCode == 12003 ) msg = ..string.concat(errCode,'\r\n',inet.lastResponse() );
					
					return msg;
				}
				return"请求失败";	
				
			}
		},url 
	)
	 
	winform.btnCheck.disabled = false; 
}

import ide;
win.setOwner(winform.hwnd,ide.getMainHwnd());

winform.show() 
win.loopMessage();
```

