c語言httpclient
㈠ apache開源項目有哪些
這個多了去了 ,apache 絕對是 開源裡面的領頭羊
for example:
分類 項目名 說明 開發語言
伺服器
(共20) Apache HTTP Server 全球第一HTTP伺服器 C/C++
Tomcat java的Web伺服器 Java
James 郵件伺服器 Java
SpamAssassin 反垃圾郵件 C/C++
Perl Apache的Perl編程語言支持 C/C++
Tcl TCL腳本語言 C/C++
Directory Server 超級目錄伺服器 Java
Axis WebServic伺服器 Java
Kanla Axis中WS-Coordination、WS-AtomicTransaction、WS-BusinessActivity協議的實現 Java
Muse Axis中WS-ResourceFramework (WSRF), WS-BaseNotification (WSN), and WS-DistributedManagement (WSDM) 標準的實現(該項目Logo是個不認識的古漢字) Java
Pubscribe Web Services Notification (WSN) 標准實現 Java
Sandesha WS-ReliableMessaging 標准實現 Java
WSS4J WS-Security 標准實現 Java
WSRF Web Services Resource Framework 標准實現 Java
Addressing WebService的WS-Addressing標准(IBM、微軟、BEA發布)實現 Java
XML Security XML簽名與加密標準的Java、C++實現 Java/C++
jUDDI UDDI的Java實現 Java
XML-RPC XML-RPC實現 Java
Derby 純Java做的關系資料庫 Java
Xindice XML資料庫 Java
開發工具(共5) Ant 自動編譯 Java
Maven 項目管理工具,比Ant強大,支持插件開發 Java
Gump 每日集成工具,支持Ant、Maven Python
JMeter Web應用性能測試 Java
DdlUtils 用XML來定義DDL Java
Web開發框架(共19) Struts MVC的Web開發框架 Java
Cocoon Web開發框架,基於可運行的XML管道語言 Java
FOP XSL-FO 列印與輸出解決方案,基於Java Java
AxKit 基於XML的Web發布 Java
Tapestry Web開發框架 Java
Turbine Web開發框架 Java
Shale 基於JSF的Web開發框架 Java
MyFaces 第一個開源的JSF實現 Java
Beehive 基於Structs的J2EE框架,簡化J2EE編程;含Web界面、WebService開發框架 Java
Velocity 模板引擎 Java
Portals 門戶解決方案 Java
Cactus Web開發測試框架 Java
Forrest 基於Cocoon的Web發布解決方案 Java
Slide 內容管理,支持WebDAV Java
Jackrabbit 內容庫,用於內容管理 Java
Lenya 內容管理,支持版本管理、工作流、所見所得編輯器 Java
Xang 基於JavaScript進行動態Web開發 Java
Xindice 純XML資料庫 Java
JCS 分布式Cache系統(Java Caching System) Java
容器(共7) Geronimo J2EE容器,類似JBoss Java
iBATIS 簡單OR映射,有.NET版本 Java/C#
Torque OR映射 Java
ORB ObjectRelationalBridge,OR映射 Java
JDO JDO標準的一個實現 Java
HiveMind 類似Spring的東西,微內核DI容器 Java
Excalibur IoC容器 Java
組件(共82) APR 不同操作系統間可移植運行時庫 C/C++
Regexp Java正則表達式 Java
ORO Perl風格的正則表達式 Java
Xerces XML解析,Java/C兩種版本 Java/C++
Crimson XML解析器 Java
AXIOM 更高效的DOM實現 Java
Lucene 全文檢索,有.NET版本 Java/C#
Logging 不僅Log4j,各個語言的版本都有了 Java/C++/Perl/C#
XMLBeans XML轉對象 Java
JaxMe Java/XML綁定的實現 Java
Taglibs JSP Tag庫 Java
HttpComponents HTTP訪問控制項 Java
ECS 輔助生成標簽(Element Construction Set) Java
WSIF WebService調用(Web Services Invocation Framework) Java
SOAP SOAP標准實現 Java
Woden WSDL書寫工具 Java
Tuscany 簡化SOA開發 Java
MIRAE 讓手機支持基於XML的服務 Java
BSF 腳本語言框架(Bean Scripting Framework),支持JavaScript等多種腳本語言 Java
BCEL 用於直接生成位元組碼(Byte Code Engineering Library) Java
POI 存取Office文檔 Java
Batik JAVA的SVG實現 Java
Attributes 訪問Java 1.5語言中定義的meta 這些項目都在jakarta commons中,都是Java的
BeanUtils 反射支持
Betwixt XML/JavaBean轉換
Chain 職責鏈模式實現
CLI 命令行參數解析
Codec 通用加密/加密演算法
Collections Java容器類完善擴充
Configuration 各種來源配置文件存取
Daemon Java模擬Unix的Daemon
DBCP 數據鏈連接池
DbUtils JDBC輔助類
Digester XML到Java對象映射工具
Discovery 根據名稱來查找資源
EL JSP 2.0 表達式標准實現
Email 發送Email類
FileUpload 文件上傳輔助類
HttpClient HTTP客戶端
IO IO操作輔助類
Jelly 基於XML的腳本引擎
Jexl JSTL 表達式語言擴展
JXPath 用XPath語言來操作對象的輔助類
Lang java.lang.類擴充
Launcher 跨平台Java應用啟動器
Logging 不同Log實現的封裝
Math 數學、統計輔助類
Modeler 創建兼容JMX標準的MBeans
Net 各種網路協議實現
Pool 對象池
Primitives 很小的Java原始對象類型操作輔助類
SCXML 狀態圖XML標准實現
Transaction 多層次容器、文件操作事務支持
Validator 用XML定義校驗器和校驗規則
VFS 虛擬文件系統用於操作FTP、SMB、Zip等
Compress tar、zip、bzip2壓縮格式文件操作 這些項目都在jakarta commons中的Sandbox中
CSV CSV文件格式支持
Exec 外部進程執行和環境設置輔助類
Finder 模擬Unix find命令
I18n 國際化輔助類
Id 生成ID輔助類
Javaflow 應用狀態管理
JCI Java編譯器介面
OpenPGP OpenPGP封裝
Pipeline 管道輔助類用於並行或者順序操作數據
Proxy 動態代碼生成輔助類
Cache 對象緩存服務 這些項目都在jakarta commons中的Dormant(睡眠)中
Clazz class操作和反射操作
Contract 契約編程用到Java中
Convert Java對象類西轉換輔助類
Events 事件管理容器
Feedparser RSS和Atom實現
Functor 用對象方式來操作函數
JJar Jar操作
Latka HTTP功能測試
Mapper 簡單封裝後可以選擇不同的對象映射實現
Messenger JMS用於Web開發中的輔助類
Resources 國際化資源信息查找
Scaffold Web應用開發工具
ThreadPool 線程池
Workflow 工作流管理系統框架
XMLIO XML配置快速簡便導入
㈡ 軟體測試開發工程師 應該學習什麼
1、測試開發工程師,畢竟也是測試人員,基礎的測試理論是必須熟悉與掌握,包括黑盒測試、白盒測試以及等價類、邊界值等設計測試李賀用例方法等。
實踐:最基本熟讀《軟體測試》一書
2、通過編寫代碼寫自動化測試用例、寫測試框架和工具,一定需要掌握一門編程語言,例如Python、Java、Go語言。個人選擇的是Python。
實踐:如利用熟悉的語言自己開發一個小型的Web項目,然後進行測試,找出問題,解決問猜扮題
3、性能測試也是項目中不可少的一項,因此需要了解熟悉性能測試基本原理、獨立分析性能測試各項指標,掌握使用性能測試工具,如Jmeter、Loadrunner等。
4、自動化常見的有介面自動化、UI自動化。熟悉精通HTTP相關原理和使用,可使用postman、Jmeter工具做介面測試。UI自動化測試用具有Selenium;
5、測試人員也需要掌握持續集成的概念和理論,熟悉使用持續集成工具,如Jenkins
6、熟悉掌握Linux系統的基本常用命令
7、熟悉使用資料庫,哪兆派懂得編寫多表查詢,子查詢等復雜語句(有些項目可能需要學習MongoDb、Redis)
㈢ 接觸Android網路編程需要什麼知識基礎
Android平台的網路應用絕大部分都是基於Java的編程介面的,也就是說我們開發類似的運用的時候可以有多種選擇,比J2me確實好多了。
2.1. 標准Java介面
java.net.*下面提供了訪問 HTTP 服務的基本功能。使用這部分介面的基本操作主要包括:
·創建 URL 以及 URLConnection / HttpURLConnection 對象
· 設置連接參數
·連接到伺服器
· 向伺服器寫數據
·從伺服器讀取數據
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import java.net.HttpURLConnection;
try {
// 創建一個 URL 對象
URL url = new URL(your_url);
// 創建一個 URL 連接,如果有代理的話可以指定一個代理。
URLConnection connection = url.openConnection(Proxy_yours);
// 對於 HTTP 連接可以直接轉換成 HttpURLConnection,
// 這樣就可以使用一些 HTTP 連接特定的方法,如 setRequestMethod() 等
//HttpURLConnection connection =
(HttpURLConnection)url.openConnection(Proxy_yours);
// 在開始和伺服器連接之前,可能需要設置一些網路參數
connection.setConnectTimeout(10000);
connection.addRequestProperty("User-Agent",
"J2me/MIDP2.0");
// 連接到伺服器
connection.connect();
// 往伺服器寫數據,數據會暫時被放到內存緩存區中
// 如果僅是一個簡單的 HTTP GET,這一部分則可以省略
OutputStream outStream = connection.getOutputStream();
ObjectOutputStream objOutput = new ObjectOutputStream(outStream);
objOutput.writeObject(new String("this is a string..."));
objOutput.flush();
// 向伺服器發送數據並獲取應答
InputStream in = connection.getInputStream();
// 處理數據
...
} catch (Exception e) {
// 網路讀寫操作往往會產生一些異常,所以在具體編寫網路應用時
// 最好捕捉每一個具體以採取相應措施
}
2.2. Apache介面
Apache HttpClient 是一個開源項目,彌補了 java.net.* 靈活性不足的缺點,為客戶端的HTTP編程提供高效、最新、功能豐富的工具包支持。Android 平台引入了 Apache HttpClient 的同時還提供了對它的一些封裝和擴展,例如設置預設的HTTP超時和緩存大小等。早期的 Android 曾同時包括 Commons HttpClient (org.apache.commons.httpclient.*) 和 HttpComponents (org.apache.http.client.* ),不過當前版本 (1.5) 中開發者只能使用後者,也就是說類似以下的一些類:
使用這部分介面的基本操作與 java.net.* 基本類似,主要包括:
· 創建 HttpClient 以及 GetMethod / PostMethod, HttpRequest 等對象
·設置連接參數
·執行 HTTP 操作
· 處理伺服器返回結果
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.params.ConnRoutePNames;
import org.apache.http.params. HttpConnectionParams;
import org.apache.http.client.params. HttpClientParams;
try {
// 創建 HttpParams 以用來設置 HTTP 參數(這一部分不是必需的)
HttpParams params = new BasicHttpParams();
// 設置連接超時和 Socket 超時,以及 Socket 緩存大小
HttpConnectionParams.setConnectionTimeout(params, 20 * 1000);
HttpConnectionParams.setSoTimeout(params, 20 * 1000);
HttpConnectionParams.setSocketBufferSize(params, 8192);
// 設置重定向,預設為 true
HttpClientParams.setRedirecting(params, true);
// 設置 user agent
HttpProtocolParams.setUserAgent(params, userAgent);
// 創建一個 HttpClient 實例
// 注意 HttpClient httpClient = new HttpClient(); 是Commons HttpClient
// 中的用法,在 Android 1.5 中我們需要使用 Apache 的預設實現 DefaultHttpClient
HttpClient httpClient = new DefaultHttpClient(params);
// 創建 HttpGet 方法,該方法會自動處理 URL 地址的重定向
HttpGet httpGet = new HttpGet ("http://www.test_test.com/");
HttpResponse response = client.execute(httpGet);
if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
// 錯誤處理,例如可以在該請求正常結束前將其中斷
httpGet.abort();
}
// 讀取更多信息
Header[] headers = response.getHeaders();
HttpEntity entity = response.getEntity();
Header header = response.getFirstHeader("Content-Type");
} catch (Exception ee) {
//
} finally {
// 釋放連接
client.getConnectionManager().shutdown();
}
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.params.ConnRoutePNames;
import org.apache.http.params. HttpConnectionParams;
import org.apache.http.client.params. HttpClientParams;
try {
// 創建 HttpParams 以用來設置 HTTP 參數(這一部分不是必需的)
HttpParams params = new BasicHttpParams();
// 設置連接超時和 Socket 超時,以及 Socket 緩存大小
HttpConnectionParams.setConnectionTimeout(params, 20 * 1000);
HttpConnectionParams.setSoTimeout(params, 20 * 1000);
HttpConnectionParams.setSocketBufferSize(params, 8192);
// 設置重定向,預設為 true
HttpClientParams.setRedirecting(params, true);
// 設置 user agent
HttpProtocolParams.setUserAgent(params, userAgent);
// 創建一個 HttpClient 實例
// 注意 HttpClient httpClient = new HttpClient(); 是Commons HttpClient
// 中的用法,在 Android 1.5 中我們需要使用 Apache 的預設實現 DefaultHttpClient
HttpClient httpClient = new DefaultHttpClient(params);
// 創建 HttpGet 方法,該方法會自動處理 URL 地址的重定向
HttpGet httpGet = new HttpGet ("http://www.test_test.com/");
HttpResponse response = client.execute(httpGet);
if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
// 錯誤處理,例如可以在該請求正常結束前將其中斷
httpGet.abort();
}
// 讀取更多信息
Header[] headers = response.getHeaders();
HttpEntity entity = response.getEntity();
Header header = response.getFirstHeader("Content-Type");
} catch (Exception ee) {
//
} finally {
// 釋放連接
client.getConnectionManager().shutdown();
}
以下例子以 HttpGet 方式通過代理訪問 HTTPS 網站:
try {
HttpClient httpClient = new HttpClient();
// 設置認證的數據
httpClient.getCredentialsProvider().setCredentials(
new AuthScope("your_auth_host", 80, "your_realm"),
new UsernamePasswordCredentials("username", "password"));
// 設置伺服器地址,埠,訪問協議
HttpHost targetHost = new HttpHost("www.test_test.com", 443, "https");
// 設置代理
HttpHost proxy = new HttpHost("192.168.1.1", 80);
httpClient.getParams().setParameter
(ConnRoutePNames.DEFAULT_PROXY, proxy);
// 創建一個 HttpGet 實例
HttpGet httpGet = new HttpGet("/a/b/c");
// 連接伺服器並獲取應答數據
HttpResponse response = httpClient.execute(targetHost, httpGet);
// 讀取應答數據
int statusCode = response.getStatusLine().getStatusCode();
Header[] headers = response.getHeaders();
HttpEntity entity = response.getEntity();
} catch (Exception ee) {
//
2.3. Android介面
android.net.* 實際上是通過對 Apache 的 HttpClient 的封裝來實現的一個 HTTP 編程介面,同時還提供了 HTTP 請求隊列管理, 以及 HTTP 連接池管理,以提高並發請求情況下(如轉載網頁時)的處理效率,除此之外還有網路狀態監視等介面。
以下是一個通過 AndroidHttpClient 訪問伺服器的最簡例子:
import import android.net.http.AndroidHttpClient;
try {
AndroidHttpClient client = AndroidHttpClient.newInstance(「your_user_agent」);
// 創建 HttpGet 方法,該方法會自動處理 URL 地址的重定向
HttpGet httpGet = new HttpGet ("http://www.test_test.com/");
HttpResponse response = client.execute(httpGet);
if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
// 錯誤處理
}
// 關閉連接
client.close();
} catch (Exception ee) {
//
}