使用Java程序通过http post访问ABAP Netweaver服务器
Created by Jerry Wang, last modified on Aug 20, 2014 source code如下: import java.io.FileNotFoundException; import java.io.IOException; import org.apache.commons.codec.binary.Base64; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.mime.HttpMultipartMode; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; @SuppressWarnings("deprecation") public class MyHTTPPost { final private static String POST_PREFIX = <replace with your own application server url>; private static String getRequestURL(String str) { String url = POST_PREFIX + str; url = url + "&sid=" + Math.random(); return url; } private static void sendHTTPPostRequest(String str) throws FileNotFoundException { HttpClient httpclient = new DefaultHttpClient(); String raw = "WANGJER:Saptest1"; String encoded = Base64.encodeBase64String(raw.getBytes()); HttpPost httppost = new HttpPost(getRequestURL(str)); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); builder.addTextBody("firstName", "Jerry"); builder.addTextBody("lastName", "Wang"); try { httppost.addHeader("Content-Type","multipart/form-data; boundary=assdsfdffafasf"); httppost.addHeader("User-Agent","Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)"); httppost.addHeader("Authorization", "Basic " + encoded); HttpResponse httpresponse = httpclient.execute(httppost); HttpEntity resEntity = httpresponse.getEntity(); String response = EntityUtils.toString(resEntity); System.out.println(response); } catch (IOException e) { System.out.println(e.getLocalizedMessage()); e.printStackTrace(); System.out.println("error!"); } } public static void main(String[] args) throws ClientProtocolException, IOException { sendHTTPPostRequest("a"); } } 运行结果:application server会解析出Java program传入的http 请求中的"a", 然后从DB table scarr 中查找对应的记录,返回给Java side: <a href=’http://www.aa.com’ target=’_blank’>American Airlines</a><br /><a href=’http://www.aircanada.ca’ target=’_blank’>Air Canada</a><br /><a href=’http://www.airfrance.fr’ target=’_blank’>Air France</a><br /><a href=’http://www.alitalia.it’ target=’_blank’>Alitalia</a><br /><a href=’http://www.british-airways.com’ target=’_blank’>British Airways</a><br /><a href=’http://www.airpacific.com’ target=’_blank’>Air Pacific</a><br /><a href=’http://www.continental.com’ target=’_blank’>Continental Airlines</a><br /><a href=’http://www.delta-air.com’ target=’_blank’>Delta Airlines</a><br /><a href=’http://www.airberlin.de’ target=’_blank’>Air Berlin</a><br /><a href=’http://www.lufthansa.com’ target=’_blank’>Lufthansa</a><br /><a href=’http://www.laudaair.com’ target=’_blank’>Lauda Air</a><br /><a href=’http://www.jal.co.jp’ target=’_blank’>Japan Airlines</a><br /><a href=’http://www.nwa.com’ target=’_blank’>Northwest Airlines</a><br /><a href=’http://www.qantas.com.au’ target=’_blank’>Qantas Airways</a><br /><a href=’http://www.saa.co.za’ target=’_blank’>South African Air.</a><br /><a href=’http://www.singaporeair.com’ target=’_blank’>Singapore Airlines</a><br /><a href=’http://www.ual.com’ target=’_blank’>United Airlines</a> 如果遇到server certificate问题,可以参考这个link的解决方案: http://code.naishe.in/2011/07/looks-like-article-no-more-unable-to.html 本文来自云栖社区合作伙伴“汪子熙”,了解相关信息可以关注微信公众号"汪子熙"。