我在两个不同的服务器上有两个 Web 应用程序。我想在标头中发送一些数据或请求其他 Web 应用程序。我该怎么做,请帮助我。
问问题
3373 次
3 回答
5
您可以通过多种方式传递数据:
通过从您的应用发出 http 请求:
URLConnection conn = new URL("your other web app servlet url").openConnection(); // pass data using conn. Then on other side you can have a servlet that will receive these calls.
通过使用 JMS 进行异步通信。
通过使用 Web 服务(SOAP 或 REST)
通过使用 RMI
通过在应用程序之间共享数据库。因此,一个写入表,另一个从该表读取
通过共享文件系统文件......一个人写入文件,另一个人从文件中读取。
您可以使用套接字连接。
于 2013-04-03T12:18:38.913 回答
0
一个 Web 应用程序充当另一个 Web 应用程序的客户端。您可以使用该org.apache.http
库在 Java 中创建您的 HTTP 客户端代码。你将如何做到这一点取决于几件事:
- 你用的是http还是https?
- 您发送数据的应用程序是否具有 REST API?
- 您有基于 SOAP 的 Web 服务吗?
如果您有一个基于 SOAP 的 Web 服务,那么为它创建一个 Java 客户端非常容易。如果没有,您可以执行类似的操作并在常规 Java 客户端中测试代码,然后再尝试在 Web 应用程序中运行它。
import org.apache.http.client.utils.*;
import org.apache.http.*;
import org.apache.http.impl.client.*;
HttpClient httpclient = new DefaultHttpClient();
try {
URIBuilder builder = new URIBuilder();
builder.setHost("yoursite.com").setPath(/appath/rsc/);
builder.addParameter("user", username);
builder.addParameter("param1", "SomeData-sentAsParameter");
URI uri = builder.build();
HttpGet httpget = new HttpGet(uri);
HttpResponse response = httpclient.execute(httpget);
System.out.println(response.getStatusLine().toString());
if (response.getStatusLine().getStatusCode() == 200) {
String responseText = EntityUtils.toString(response.getEntity());
httpclient.getConnectionManager().shutdown();
} else {
log(Level.SEVERE, "Server returned HTTP code "
+ response.getStatusLine().getStatusCode());
}
} catch (java.net.URISyntaxException bad) {
System.out.println("URI construction error: " + bad.toString());
}
于 2013-04-03T12:45:20.903 回答
0
HttpClient 可以提供帮助
http://hc.apache.org/index.html
Apache HttpComponents
Apache HttpComponents™ 项目负责创建和维护一个专注于 HTTP 和相关协议的低级 Java 组件工具集。
于 2013-04-03T12:21:14.167 回答