最近、クライアントのインターフェイスでラッパーを作成し、会社からの他のシステムコールを使用する必要があります。クライアントインターフェイスは、HTTP URLを使用して実装されています。 httpclientパッケージを使用してリクエストを行いたいと思います。同時に、要求されたURLはHTTPSであるため、証明書の必要性を回避するために、クラスを使用してDefaulthttpClientクラスを継承し、検証プロセスを無視します。
1。sslclientクラスを書き、それをhttpclientに継承します
パッケージcom.pcmall.service.sale.miaomore.impl; java.security.cert.certificateExceptionをインポートします。 java.security.cert.x509certificateをインポートします。 javax.net.ssl.sslcontextをインポートします。 javax.net.ssl.trustmanagerをインポートします。 javax.net.ssl.x509trustmanagerをインポートします。 org.apache.http.conn.clientConnectionManagerをインポートします。 Import org.apache.http.conn.scheme.scheme; org.apache.http.conn.scheme.schemeregistryをインポートします。 org.apache.http.conn.ssl.sslsocketFactoryをインポートします。 import org.apache.http.impl.client.defaulthttpclient; // httpclient https requestsを要求するために使用されるpublic class sslclientはdefaulthttpclientを拡張します{public sslclient()throws exception {super(); sslcontext ctx = sslcontext.getInstance( "tls"); X509TrustManager TM = new X509TrustManager(){@Override public void checkclienttrusted(x509certificate [] chain、string authtype)Sthrows exception {} @Override public void checkervertrusted(x509certificate [] chaintype) x509Certificate [] getCepteDissuers(){return null; }}; ctx.init(null、new Trustmanager [] {tm}、null); SSLSocketFactory SSF = new SSLSocketFactory(CTX、SSLSocketFactory.Allow_all_hostname_verifier); clientConnectionManager CCM = this.getConnectionManager(); Schemeregistry sr = ccm.getschemeregistry(); sr.register(new Scheme( "HTTPS"、443、SSF)); }}2。httpclientを使用して投稿リクエストを送信するクラスを書く
パッケージcom.pcmall.service.sale.miaomore.impl; java.util.arraylistをインポートします。 java.util.iteratorをインポートします。 java.util.listをインポートします。 java.util.mapをインポートします。 java.util.map.entryをインポートします。 org.apache.http.httpentityをインポートします。 org.apache.http.httpresponseをインポートします。 Import org.apache.http.namevaluepair; import org.apache.http.client.httpclient; org.apache.http.client.entity.urlencodedformentityをインポートします。 org.apache.http.client.methods.httppostをインポートします。 org.apache.http.message.basicnamevaluepairをインポートします。 org.apache.http.util.entityutilsをインポートします。 /** httpclientを使用した投稿リクエストのツールクラス*/ public class httpclientutil {public string dopost(string url、map <string、string> map、string charset){httpclient httpclient = null; httppost httppost = null;文字列結果= null; try {httpclient = new sslclient(); httppost = new httppost(url); //パラメーターリスト<NameValuePair>リスト= new ArrayList <NameValuePair>(); iterator iterator = map.entryset()。iterator(); while(iterator.hasnext()){entry <string、string> elem =(entry <string、string>)iterator.next(); list.add(new BasicNameValuePair(Elem.getKey()、Elem.getValue())); } if(list.size()> 0){urlencodedformentity entity = new urlencodedformentity(list、charset); httppost.setentity(entity); } httpresponse応答= httpclient.execute(httppost); if(resentity!= null){httpentity resentity = respons.getEntity(); if(resentity!= null){result = entityutils.toString(resentity、charset); }}}} catch(Exception ex){ex.printstacktrace(); } return result; }}3.投稿リクエストのためにテストコードを呼び出します
パッケージcom.pcmall.service.sale.miaomore.impl; java.util.hashmapをインポートします。 java.util.mapをインポートします。 //インターフェイスパブリッククラスのテストメインをテスト{private string url = "https://xxx.xxx.xxx/";プライベート文字列charset = "utf-8"; private httpclientutil httpclientutil = null; public testmain(){httpclientutil = new httpclientutil(); } public void test(){string httporgcreatetest = url + "xxx/xxx/delivery"; map <string、string> createmap = new hashmap <string、string>(); createmap.put( "Deliviry_code"、 "1D1QZ222Z22SM21A"); createmap.put( "Timestamp"、 "1479198840000"); createmap.put( "sign"、 "f2109c333f3eade929f932e89703fa0f683d43eb"); string httporgcreatetestrtn = httpclientutil.dopost(httporgcreatetest、createmap、charset); system.out.println( "result:"+httporgcreateTestrtn); } public static void main(string [] args){testmain main = new testmain(); main.test(); }}最初は、BasicNameValuePairの使用を理解していませんでした。その後、私はそれをゆっくりと調査し、BasicNameValuePairはキー価値のペアを保存するクラスであることがわかりました。新しいキー値と値値を追加すると、HTTP形式、=および&シンボルなど、自動的に置き換えます。 https://xxx.xxx.xxx/xxx/xxxx/delivery?delivery_code=dqzzsm2a xpamp=14799198840000&sign=f209c33feade99f93e8970fa0fa0f68d3eb。私たちはそれを自分でスプライスして一致させる必要はありません。個人的には、使用するのが非常に便利で正確だと思います。私はそれがみんなを助けることができることを願っています!
上記は、編集者からもたらされたJava Post Request(HTTPS)インスタンスのコンテンツ全体です。誰もがwulin.comをサポートすることを願っています〜