วันนี้ฉันพบแพลตฟอร์ม SMS หลายแห่ง อันที่จริงสิ่งที่ฉันต้องการใช้มากที่สุดคือ SharesDK การใช้ฟังก์ชั่น HTTP API SMS ไม่เพียง แต่ต่ำเท่านั้น แต่ยังสามารถชาร์จได้อย่างน้อย 100RMB อย่างไรก็ตามการตรวจสอบนั้นเข้มงวดเกินไปและแอพที่เกี่ยวข้องจะต้องรวมฟังก์ชั่น SMS ของพวกเขาและจะใช้เวลามากกว่า 20 วันในการอัปโหลดและตรวจสอบ ฉันแค่ต้องการหาแพลตฟอร์ม SMS เพื่อทดสอบดังนั้นจึงลืมไปแล้ว จากนั้นฉันเพิ่งใช้แพลตฟอร์มข้อความแบบสุ่มบน Baidu บน www.wasun.cn ฉันรู้สึกว่ามันไม่เลวในตอนนี้ อย่างน้อยบัญชีทดสอบที่ให้ไว้ไม่ได้รับข้อความมานานกว่า 5 วินาที ฉันดูมันและมักจะเป็น 3 วินาทีหรือเร็วกว่า ต่อไปฉันจะพูดคุยเกี่ยวกับวิธีการเรียกอินเทอร์เฟซ SMS และปัญหาที่พบในระหว่างการใช้งาน
1. วิธีการขอวิธีการ httprequest
DOMO ที่เขาให้นั้นถูกห่อหุ้มจริงซึ่งใช้เพื่อขอ httpClient เขาเคยใช้คลาสนี้ใน. NET มาก่อนและยังมีคลาส HTTPWEBREQUEST ใน. NET ฉันดูรหัสใน Java และฟังก์ชั่นของมันควรถูกห่อหุ้มไว้ในคลาส URLConnection เนื่องจากเวลาและวิธีการห่อหุ้มฉันยังไม่ได้ศึกษาการวิจัยเชิงลึกบนอินเทอร์เน็ต แต่ควรมีความหมายเช่นเดียวกับ httpwebrequest ใน. NET รหัสต่อไปนี้ถูกโพสต์รวมถึงรหัสของคลาส HTTPClient ของการสร้างการสาธิต
ผู้ช่วยบรรจุภัณฑ์; นำเข้า java.io.bufferedreader; นำเข้า java.io.ioexception; นำเข้า java.io.inputstreamreader; นำเข้า java.io.printwriter; นำเข้า java.io.unsupportencodingexception; นำเข้า java.net.url; นำเข้า java.util.map; คลาสสาธารณะ httprequest { /** * ส่งคำขอวิธีการไปยัง URL ที่ระบุ * * @param url * url เพื่อส่งคำขอ * @param พารามิเตอร์ * พารามิเตอร์คำขอพารามิเตอร์การร้องขอควรอยู่ในรูปแบบของชื่อ 1 = value1 & name2 = ค่า 2 * @return URL การตอบสนองผลลัพธ์ของทรัพยากรระยะไกลที่แสดงโดยทรัพยากรระยะไกล*/ สตริงคงที่สาธารณะ sendget (สตริง url, พารามิเตอร์สตริง) {string result = ""; bufferedReader ใน = null; ลอง {string urlnamestring = url + "?" + param; url realurl = url ใหม่ (urlnamestring); // เปิดการเชื่อมต่อระหว่างการเชื่อมต่อ urlconnection url = realurl.openconnection (); // ตั้งค่าแอตทริบิวต์การร้องขอทั่วไปการเชื่อมต่อ SetRequestProperty ("ยอมรับ", "*/*"); Connection.setRequestProperty ("การเชื่อมต่อ", "Keep-Alive"); Connection.setRequestProperty ("ผู้ใช้ตัวแทน", "Mozilla/4.0 (เข้ากันได้; MSIE 6.0; Windows NT 5.1; SV1)"); // สร้างการเชื่อมต่อการเชื่อมต่อจริง connect (); // รับฟิลด์ส่วนหัวตอบกลับทั้งหมด <String, list <String>> map = connection.getheaderfields (); // traverse ฟิลด์ส่วนหัวการตอบสนองทั้งหมดสำหรับ (คีย์สตริง: map.keyset ()) {system.out.println (คีย์ + "--->" + map.get (คีย์)); } // กำหนดสตรีมอินพุต bufferedReader เพื่ออ่านการตอบสนองของ URL ใน = bufferedReader ใหม่ (ใหม่ inputStreamReader (Connection.getInputStream ())); สายสตริง; ในขณะที่ ((line = in.readline ())! = null) {result += line; }} catch (exception e) {system.out.println ("ข้อยกเว้นเกิดขึ้นเมื่อส่งคำขอรับ!" + e); E.PrintStackTrace (); } // ใช้ในที่สุดบล็อกเพื่อปิดสตรีมอินพุตในที่สุด {ลอง {ถ้า (ใน! = null) {in.close (); }} catch (Exception e2) {e2.printstackTrace (); }} ผลการส่งคืน; } /** * ส่งคำขอไปยัง URL ที่ระบุ * @param url * url เพื่อส่งคำขอ * @param พารามิเตอร์ * พารามิเตอร์คำขอพารามิเตอร์คำขอควรอยู่ในรูปแบบของชื่อ 1 = value1 & name2 = value2 * @return ผลการตอบกลับของทรัพยากรระยะไกลที่แสดงโดย */ สตริงคงที่สาธารณะ sendPost (url สตริง, พารามิเตอร์สตริง) {printWriter out = null; bufferedReader ใน = null; สตริงผลลัพธ์ = ""; ลอง {url realurl = url ใหม่ (url); // เปิดการเชื่อมต่อระหว่าง urlConnection conn = realurl.openconnection (); // ตั้งค่าแอตทริบิวต์คำขอทั่วไป conn.setRequestProperty ("ยอมรับ", "*/*"); conn.setRequestProperty ("การเชื่อมต่อ", "Keep-Alive"); conn.setRequestProperty ("ผู้ใช้ตัวแทน", "Mozilla/4.0 (เข้ากันได้; MSIE 6.0; Windows NT 5.1; SV1)"); // ในการส่งคำขอโพสต์คุณต้องตั้งค่าสองบรรทัดต่อไปนี้เป็น conn.SetDoOutput (จริง); conn.setDoInput (จริง); // รับกระแสเอาต์พุตที่สอดคล้องกับวัตถุ urlConnection out = printwriter ใหม่ (conn.getOutputStream ()); // ส่งพารามิเตอร์การร้องขอ out.print (param); // บัฟเฟอร์ out.flush () ของสตรีมเอาต์พุตฟลัช; // กำหนดสตรีมอินพุต bufferedReader เพื่ออ่านการตอบสนอง URL ใน = ใหม่ bufferedReader (ใหม่ inputStreamReader (conn.getInputStream ())); สายสตริง; ในขณะที่ ((line = in.readline ())! = null) {result += line; }} catch (exception e) {system.out.println ("ข้อยกเว้นเกิดขึ้นเมื่อส่งคำขอโพสต์!" +e); E.PrintStackTrace (); } // ใช้ในที่สุดบล็อกเพื่อปิดสตรีมเอาต์พุตและสตรีมอินพุตในที่สุด {ลอง {ถ้า (ออก! = null) {out.close (); } if (in! = null) {in.close (); }} catch (ioexception ex) {ex.printstacktrace (); }} ลอง {result = สตริงใหม่ (result.getBytes ("ISO8859-1"), "UTF-8"); } catch (unsupportencodingexception e) {// toDo บล็อก catch ที่สร้างโดยอัตโนมัติ E.PrintStackTrace (); } ผลตอบแทนผลลัพธ์; -2. การสาธิตอย่างเป็นทางการรหัสวิธีการขอวิธีการ httpclient
// นำเข้า java.io.fileinputstream; // นำเข้า java.io.filenotfoundexception; นำเข้า java.io.ioexception; นำเข้า org.apache.commons.httpclient.httpClient; นำเข้า org.apache.Commons.httpClient org.apache.commons.httpclient.namevaluePair; นำเข้า org.apache.commons.httpclient.methods.postmethod นำเข้า org.dom4j.document; นำเข้า org.dom4j.documentexception; นำเข้า org.dom4j.documenthelper; นำเข้า org.dom4j.element; คลาสสาธารณะ sendsms {url สตริงคงที่ส่วนตัว = "http://121.199.?.178/webservice/sms.php?method=submit"; โมฆะคงที่สาธารณะหลัก (สตริง [] args) {httpClient client = new httpClient (); วิธีการ postmethod = postmethod ใหม่ (URL); //client.getParams().SetContentCharset("GBK "); client.getParams (). SetContentCharset ("UTF-8"); Method.setRequestHeader ("ContentType", "Application/X-WWW-FORM-URLENCODED; charset = UTF-8"); สตริงเนื้อหา = สตริงใหม่ ("รหัสการยืนยันของคุณคือ: 7528 โปรดอย่ารั่วไหลของรหัสการยืนยันไปยังผู้อื่น"); namevaluePair [] data = {// ส่ง SMS ใหม่ namevaluePair ("บัญชี", "ชื่อผู้ใช้"), namevaluePair ใหม่ ("รหัสผ่าน", "รหัสผ่าน"), // รหัสผ่านสามารถเข้ารหัสโดยใช้รหัสผ่านธรรมดา NamevaluePair ("มือถือ", "หมายเลขโทรศัพท์มือถือ"), NamevaluePair ใหม่ ("เนื้อหา", เนื้อหา),}; Method.setRequestbody (ข้อมูล); ลอง {client.executemethod (วิธีการ); String submentResult = method.getResponseBodyString (); //system.out.println(submitresult); เอกสารเอกสาร = DocumentHelper.parsetext (SubmentResult); Element root = doc.getRootelement (); รหัสสตริง = root.elementText ("รหัส"); สตริง msg = root.elementtext ("msg"); String SMSID = root.elementText ("SMSID"); System.out.println (รหัส); System.out.println (msg); System.out.println (SMSID); if (code == "2") {system.out.println ("การส่ง SMS สำเร็จ"); }} catch (httpexception e) {// toDo บล็อก catch ที่สร้างโดยอัตโนมัติ e.printstacktrace (); } catch (ioexception e) {// todo บล็อก catch block ที่สร้างอัตโนมัติ e.printstacktrace (); } catch (documentexception e) {// todo บล็อก catch ที่สร้างอัตโนมัติ e.printstacktrace (); }} 0 3. เรียกรหัส HTTPRequest ที่ห่อหุ้ม
สตริง phonemessageParameter = สตริงใหม่ ("บัญชี =? & รหัสผ่าน = wxhdcs@456 & content = รหัสการตรวจสอบของคุณคือ: [ตัวแปร]. โปรดอย่ารั่วไหลของรหัสการตรวจสอบกับผู้อื่น & มือถือ =? & stime = 2012-08-01%208: 20: 23 returnResult = httprequest.sendpost ("http://121.?.16.178/webservice/sms.php?method=submit", phonemessageparameter); out.println ("<script> alert ("+returnresult+");หากคุณใช้แพลตฟอร์มนี้คุณควรให้ความสนใจกับมัน ชื่อพารามิเตอร์ในเอกสารอย่างเป็นทางการนั้นผิดการสาธิตนั้นถูกต้องและอินเทอร์เฟซเขียนไว้ในเว็บเซิร์ฟเวอร์ มันไม่ส่งคืนข้อมูล JSON หรือ XML แต่เป็นหน้า HTML มาตรฐานและจากนั้นเนื้อหาทั้งหมดที่ต้องการจะถูกเขียนในแท็กใน HTML หากเป็นเนื้อหาการทดสอบเนื้อหาจะต้องเขียนพารามิเตอร์ตามที่ระบุไว้มิฉะนั้นจะมีการรายงานข้อผิดพลาด หากคุณซื้ออย่างเป็นทางการคุณสามารถตั้งค่าเนื้อหาเทมเพลตด้วยตัวเอง
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น