1. 程式人生 > 其它 >http請求,HttpClient,呼叫簡訊介面

http請求,HttpClient,呼叫簡訊介面

專案中安全設定找回密碼的功能,需要通過傳送簡訊驗證繫結手機,通過繫結的手機號驗證並重新設定密碼。

因為專案是通過maven管理的,所以需要在pom.xml檔案中引入jar包,

maven引入的jar包:

        <!-- https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient -->
        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>3.1</version>
        </dependency>

這裡需要注意的是,因為但因版本相容等原因,開始引入的並不是目前最新的 3.1 版本,而是比較老的2.*版本,這個版本沒有設定字元型別的方法,所以只能用預設的字元型別傳送資料,結果返回Fail,後來測試在沒有漢字的判斷時可以返回OK,又通過Postman檢視:

因此確定時傳送請求中漢字的問題,後來修改為最新的3.1版本之後設定字串格式 “UTF-8”,可以正常傳送請求並返回true。

傳送請求的部分程式碼:

String info = null;  
            try{  
                HttpClient httpclient = new HttpClient();//方法呼叫  
                
                PostMethod post = new PostMethod("http://192.168.1.99:8088/sms/sendCode");//介面地址  
                
                post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"UTF-8");//格式轉換  
                
                post.addParameter("signName", "淄博**智慧");
                post.addParameter("templateCode", "SMS_114600059");
                post.addParameter("expireTime", "300");
                post.addParameter("count", "4");
                post.addParameter("bizId", "learn");
                post.addParameter("phoneNumbers", list.get(0).getPhone());
                
                httpclient.executeMethod(post);  
                info = new String(post.getResponseBody(),"UTF-8"); 
                mav.addObject("apimsg",info);
            }catch (Exception e) {  
                e.printStackTrace();  
            }  

返回的OK傳送請求成功,

返回的later傳送過請稍後,

返回的Fail失敗,之前沒有設定字元編碼型別是就是返回這樣,

還有因為引數名寫錯提示的返回參事錯誤等等。

使用者輸入驗證碼判斷是否正確:

HttpClient httpclient = new HttpClient();//方法呼叫  
            PostMethod post = new PostMethod("http://192.168.1.99:8088/sms/validCode");//介面地址  
            //這裡沒有設定字元編碼,也可以通過,因為沒有漢字
            post.addParameter("bizId", "learn");
            post.addParameter("code", pnum);
            post.addParameter("phoneNumber", "17560306966");
            httpclient.executeMethod(post); 
            
            info = new String(post.getResponseBody()); 

這裡是根據輸入的驗證碼判斷是否正確,返回OK代表輸入的驗證碼和傳送的驗證碼一致。