httpurlconnection設定user-agent引數
阿新 • • 發佈:2019-01-31
URL myUrl = new URL(searchURL); URLConnection myConn = (HttpURLConnection)myUrl.openConnection(); myConn.setRequestProperty("User-agent","Mozilla/4.0"); BufferedReader br = new BufferedReader(new InputStreamReader(myConn.getInputStream())); myConn.setRequestProperty("User-agent","Baiduspider ( http://www.baidu.com/search/spider.htm)"); myConn.setRequestProperty("User-agent","Mozilla/4.0"); HttpURLConnection.setFollowRedirects(true); httpConn.setRequestMethod("GET"); httpConn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows 2000)"); HttpRequest request = new HttpRequest("http://伺服器/1.jsp"); 第一次使用的是GET方式 request.setMethod("GET"); 緊接著進行一些請求的屬性設定 request.setRequestHeader("Cache-Control", "no-cache"); 這裡保持連線,因為後面還要傳送資料到伺服器呢 request.setRequestHeader("Connection", "Keep-Alive"); 下面是一些無關緊要的屬性設定了。 request.setRequestHeader("Accept", "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"); request.setRequestHeader("Accept-Encoding", "gzip, deflate"); request.setRequestHeader("Accept-Language", "en-au"); request.setRequestHeader("Referer", "http://伺服器/1.jsp"); request.setRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3215; .NET CLR 1.0.3705)"); 構造好了連線請求,然後連線 request.connect(); 緊接著提取Cookie值,在後文的post中可以用到。 String strCookie = request.getResponseHeader("Set-Cookie"); strCookie = strCookie.substring(0,strCookie.indexOf(";")); 下面通過迴圈查詢,提取__VIEWSTATE的值 for ( int i = 0; i < nlist.getLength(); i++) { node = nlist.item(i); strName = getNodeAttributeValue(node,"name"); if ( strName.equals("__VIEWSTATE") ) { strValue = getNodeAttributeValue(node,"value"); break; } } 往伺服器組織傳送資料 DataOutputStream dos = new DataOutputStream(request.getOutputStream()); dos.writeBytes("-----------------------------"+strBoundary);//這是每個要被髮送資料間的間隔 dos.writeBytes("/r/nContent-Disposition: form-data; name=/"__VIEWSTATE/""); dos.writeBytes("/r/n/r/n"+strValue); dos.writeBytes("/r/n-----------------------------"+strBoundary); 這裡面是傳送檔案的部分 dos.writeBytes("/r/nContent-Disposition: form-data; name=/"uploadfile1/"; filename=/"" + strFileName + "/""); dos.writeBytes("/r/nContent-Type: text/xml"); dos.writeBytes("/r/n/r/n"); dos.writeBytes(new String(data)); dos.writeBytes("/r/n-----------------------------"+strBoundary); dos.writeBytes("/r/nContent-Disposition: form-data; name=/"Button1/""); dos.writeBytes("/r/n上傳"); dos.writeBytes("/r/n-----------------------------"+strBoundary+"--"); dos.writeBytes("/r/n"); dos.close();