本文目錄一覽:
- 1、java 調用 rest 介面 怎麼寫請求行的信息
- 2、java有哪些好用的REST框架
- 3、java的rest介面如何使用?要求用它做一個第三方控制已運行的java程序停止運行。不是很懂 求詳解!
- 4、如何實現支持REST的Java Business Services
- 5、java中rest介面實現數據接收與轉發
java 調用 rest 介面 怎麼寫請求行的信息
package com.demo;
import jaimg id=”selectsearch-icon” src=”” alt=”搜索”va.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.xml.bind.DatatypeConverter;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
public class restTest {
public static voidmain(String[] args) {
try {
DefaultHttpClient Client = newDefaultHttpClient();
HttpGet httpGet = newHttpGet(“你的地址”);
String encoding =DatatypeConverter.printBase64Binary(“admin:admin”.getBytes(“UTF-8”));
httpGet.setHeader(“Authorization”, “Basic ” +encoding);
HttpResponse response = Client.execute(httpGet);
System.out.println(“response =” + response);
BufferedReader breader = newBufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuilder responseString = newStringBuilder();
String line = “”;
while ((line = breader.readLine()) !=null) {
responseString.append(line);
}
breader.close();
String repsonseStr =responseString.toString();
System.out.println(“repsonseStr =” + repsonseStr);
} catch (IOException e) {
e.printStackTrace();
}
}
}
java有哪些好用的REST框架
1 Dropwizard
Dropwizard 提供了穩定成熟的Java庫, 並封裝成一個簡單的輕量級的包。
Dropwizard 介於框架和庫之間。它提供了一個開發web應用程序的全部所需。由於內置模塊化,一個應用程序可以保持小而精幹的特點,減少開發和維護的時間,減少負擔。
Dropwizard 使用已有的 Jetty HTTP 庫,嵌入到你的項目中,無需外部的server。所有的Dropwizard項目都有一個 main 方法來管理內建的 HTTP server.
2 Jersey
Jersey RESTful 框架是開源的RESTful框架, 實現了JAX-RS (JSR 311 JSR 339) 規範。它擴展了JAX-RS 參考實現, 提供了更多的特性和工具, 可以進一步地簡化 RESTful service 和 client 開發。儘管相對年輕,它已經是一個產品級的 RESTful service 和 client 框架。
3 Ninja Web Framework
Ninja Web Framework是全棧的 java web framework。穩定, 快速, 可靠, 產品級.
它提供了開發,測試,發布,維護 RESTful web應用的一切(Servlets, Guice, JPA, Flyway migrations, Maven, etc.).
就像 DropWizzard, Ninja Web Framework 是一個集成的軟體棧。你不必建立你自己的,只需使用 Maven archetype生成一個新的項目,導入到IDE中就可以開始編碼了。
4
Play Framework
使用Play Framework 很容易地創建,構建和發布 web 應用程序,支持 Java Scala。它使用Akka, 基於一個輕量級的無狀態的架構。它應該應用於大規模地低CPU和內存消耗的應用。
5
Spark Framework
不要和 Apache 的大數據框架 Spark 弄混, 這裡的 Spark 框架是一個輕量級的 Java web 框架,用來進行快速的開發(50% Spark用戶使用 Spark 創建 REST APIs)。 它受 Ruby 框架 Sinatra 啟發。
它有一個不到1M的最小化的內核, 提供了所有基本的特性, 用來構建 RESTful 或者傳統的 web 應用程序。
java的rest介面如何使用?要求用它做一個第三方控制已運行的java程序停止運行。不是很懂 求詳解!
@Provider
@Produces(“application/json”)
@Consumes(“application/json”)
public class GsonProvider implements MessageBodyWriterObject,
MessageBodyReaderObject { private final Gson gson;
public GsonProvider() {
gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().setDateFormat(
“yyyy-MM-dd”).create();
} public boolean isReadable(Class? type, Type genericType, Annotation[] annotations,
MediaType mediaType) {
return true;
} public Object readFrom(ClassObject type, Type genericType,
Annotation[] annotations, MediaType mediaType,
MultivaluedMapString, String httpHeaders, InputStream entityStream)
throws IOException, WebApplicationException {
return gson.fromJson(new InputStreamReader(entityStream, “UTF-8”), type);
} public boolean isWriteable(Class? type, Type genericType, Annotation[] annotations,
MediaType mediaType) {
return true;
} public long getSize(Object obj, Class? type, Type genericType,
Annotation[] annotations, MediaType mediaType) {
return -1;
} public void writeTo(Object obj, Class? type, Type genericType,
Annotation[] annotations, MediaType mediaType,
MultivaluedMapString, Object httpHeaders, OutputStream entityStream)
throws IOException, WebApplicationException {
entityStream.write(gson.toJson(obj, type).getBytes(“UTF-8”));
} }
如何實現支持REST的Java Business Services
下圖顯示了示例實現中的類。藍色所示的類是框架外部的類,將它們放在這裡是為了展示與框架的結構關係。
配置文件
配置文件 “rest-services-config.xml” 包含 REST 服務表示形式和相應的Java Action之間的映射,如下:
清單 1. REST 服務配置
以下是引用片段:
?xml version=”1.0″ ?
rest-config
rest-api id=”CreateUserProfile” uri=”/Registration/CreateUser” method=”POST”
handler id=”RegAction” class=”ws.registration.restactions.CreateProfile”/
/rest-api
rest-api id=”GetUserProfile” uri=”/Registration/GetUser” method=”GET”
handler id=”RegAction” class=” ws.registration.restactions.GetProfile”/
/rest-api
…
/rest-config
在該示例實現中,XML Binding服務實現在”rl-config.xml”文件中配置的框架配置文件如下所示。通過修改此文件實現的任何自定義實現都可以接入,只要實現了XMLBindingService介面。
清單 2:框架配置
以下是引用片段:
# XML Binding Implementation Service
# Default implementation
ws.rest.xmlbinding.service.impl=ws.rest.xmlbinding.service.impl.XMLEncDecServiceImpl
日誌配置文件 “ws_log.properties” 指定log4j屬性和日誌文件的位置。這可以按需要作出適當修改。
Controller Servlet
RESTServiceServlet在web.xml中配置,處理所有具有上下文路徑的請求,其中上下文路徑的web-app/restservices/*如下所示:
清單 3:Servlet配置
以下是引用片段:
servlet
description/description
display-nameRESTServletService/display-name
servlet-nameRESTServletService/servlet-name
servlet-classws.rest.servlet.RESTServiceServlet/servlet-class
/servlet
servlet-mapping
servlet-nameRESTServletService/servlet-name
url-pattern/restservices/*/url-pattern
/servlet-mapping
REST Action
對於每個REST資源,例如 GetUserProfile,都將創建一個實現ActionInterface的相應動作類。該介面定義了動作類需要實現的 “doExecute(ActionContext ctx)” 方法。ActionContext提供服務,獲取 REST 路徑輸入或查詢參數,獲取XMLBindingService實例並將XML輸出發送到客戶端,不公開Action的協議細節。PathInputs是一個包含路徑值的List對象,路徑值的順序與它們在URL中指定的順序相同。
清單 4:Action代碼片段
以下是引用片段:
public class GetProfile implements ActionInterface {
public void doExecute(ActionContext context) throws Exception {
// Get the value from URL path
String userName = context.getPathInputs().get(0);
// Invoke backend service to retrieve user profile
UserProfileBean bean = getUser(userName);
// Serialize the bean using framework service and send response
String xml = context.getXMLBindingService().serialize(bean);
// Use the ActionContext to generate XML and
context.sendResponse(response, xml);
}
動作類負責使用超類中的XMLBindingService以XML形式生成輸出。請查看示例實現的ws.registration.restactions.GetProfile類。ActionContext還可以提供協議特定的HttpServletRequest和HttpServletResponse對象,以防需要自定義處理。它還提供了Path值和URL參數。
XML Binding
該代碼示例提供了一個Java XML Binding的實現,該實現使用java.beans.XMLEncoder和java.beans.XMLDecoder類。XML Binding服務實現接受一個JavaBean對象,並將其轉換為上述Encoder和Decoder相應的XML表示形式。如果需要JAXB實現,那麼可以開發一個實現 ws.rest.xmlbinding.service.XMLBindingService介面的實現類。
執行示例服務
示例代碼分發包含示例WAR文件”RESTWS.war”,它可以部署在Tomcat容器中(已在Apache Tomcat版本6.0.20上進行了測試)。JDK要求是JDK 1.5以上。
成功部署該應用程序之後,在瀏覽器中輸入URL:
圖 5. 創建Profile Service輸入
該頁面調用REST服務
POST url-prefix/Registration/CreateProfile
您可以修改在 string/string 標記中指定的XML值。
注意:請注意XML結構依賴於JavaBean對象和Java使用的XML序列化技術。
提交時,動作類顯示成功消息,表示後端服務的調用。可以查看 ws_log.log 文件調試消息。
圖 6. 創建Profile Service輸出
類似地,實現示例GET url-prefix/Registration/GetProfile/{username}服務以檢索配置文件,如下圖所示:
轉載僅供參考,版權屬於原作者。祝你愉快,滿意請採納哦
java中rest介面實現數據接收與轉發
java中的介面是一種特殊的類,使用關鍵字interface創建。介面功能完全實現後,可以打成jar包,提供給其他公司使用。
要返回json格式數據,可以把介面中抽象方法的返回值類型規定為JSONObject或JSONString類型。這樣當其他公司調用時,得到的數據就是json數據了。
另外,以jar形式提供的介面,可以通過反編譯得到你的源碼,如果你不希望開源,就要加密了。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/182895.html