在前端Java Spring MVC中创建请求对象时遇到困难,需要复制以下.NET-MVC代码转换为java



我正在使用Java Spring-MVC开发一个前端应用程序,但是我在创建请求对象以访问Web服务时遇到了困难,就像我在.网络MVC。谁能告诉我下面给定代码的 Java 中的等效类和方法。

我需要从 复制这 2 种方法。Net-MVC to Java.

第一种方法:

private HttpWebRequest RequestObj { get; set; }
public Stream DataStreamObj { get; set; }
private RequestModel RequestModelObj { get; set;         
public RequestGenerator(String WebserviceUrl)
{
RequestObj = (HttpWebRequest)WebRequest.Create(WebConfigurationManager.AppSettings["WebServiceURL"] + WebserviceUrl);
RequestObj.Method = "POST";GenerateLoginRequest
RequestObj.ContentType = "application/json";
RequestModelObj = new RequestModel();
RequestModelObj.ApiKey = WebConfigurationManager.AppSettings["apiKey"];
RequestModelObj.DeviceId = Constant.AppConstants.ONE;
}

第二种方法:

private string CallWebservice(Dictionary<String, Object> RequestDict)
{
try
{
HttpWebRequest Request = (HttpWebRequest)RequestDict["request"];
RequestModel RequestModel = (RequestModel)RequestDict["requestData"];
//Tell them the length of content
string Json = JsonConvert.SerializeObject(RequestModel);
byte[] ByteArray = Encoding.UTF8.GetBytes(Json);
Request.ContentLength = ByteArray.Length;
//Write content on stream
Stream DataStream = Request.GetRequestStream();
DataStream.Write(ByteArray, 0, ByteArray.Length);
DataStream.Close();
//Initiate Call
HttpWebResponse Response = GetWebResponse(Request);
DataStream = Response.GetResponseStream();
StreamReader Reader = new StreamReader(DataStream);
// Read the content.
string responseFromServer = Reader.ReadToEnd();
// Display the content.
Reader.Close();
Response.Close();
return responseFromServer;
}
catch (System.Net.WebException ex)
{
var response = ex.Response as HttpWebResponse;
return "";
}  
}

RestTemplate 类旨在调用 REST 服务,因此它的主要方法与 REST 的基础密切相关也就不足为奇了,这些基础是 HTTP 协议的方法:HEAD、GET、POST、PUT、DELETE 和 OPTIONS。 例如,它的方法有headForHeaders(),getForObject(),postForObject(),put()和delete()等。

阅读更多和源代码:Spring REST JSON示例 HTTP GET 方法示例

1) 以字符串格式获取员工集合的 XML 表示形式

REST API 代码

@RequestMapping(value = "/employees", produces = 
MediaType.APPLICATION_XML_VALUE, method = RequestMethod.GET)
public String getAllEmployeesXML(Model model) 
{
model.addAttribute("employees", getEmployeesCollection());
return "xmlTemplate";
}

REST 客户端代码

private static void getEmployees()
{
final String uri = 
"http://localhost:8080/springrestexample/employees.xml";
RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject(uri, String.class);
System.out.println(result);
}

2) 以字符串格式获取员工集合的 JSON 表示形式

REST API 代码

@RequestMapping(value = "/employees", produces = 
MediaType.APPLICATION_JSON_VALUE,  method = RequestMethod.GET)
public String getAllEmployeesJSON(Model model) 
{
model.addAttribute("employees", getEmployeesCollection());
return "jsonTemplate";
}

REST 客户端代码

private static void getEmployees()
{
final String uri = 
"http://localhost:8080/springrestexample/employees.json";
RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject(uri, String.class);
System.out.println(result);
}

3) 将自定义 HTTP 标头与 RestTemplate 一起使用

REST API 代码

@RequestMapping(value = "/employees", produces = 
MediaType.APPLICATION_JSON_VALUE,  method = RequestMethod.GET)
public String getAllEmployeesJSON(Model model) 
{
model.addAttribute("employees", getEmployeesCollection());
return "jsonTemplate";
}

REST 客户端代码

private static void getEmployees()
{
final String uri = "http://localhost:8080/springrestexample/employees";
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
HttpEntity<String> entity = new HttpEntity<String>("parameters", 
headers);
ResponseEntity<String> result = restTemplate.exchange(uri, 
HttpMethod.GET, entity, String.class);
System.out.println(result);
}

4) 获取数据作为映射对象

REST API 代码

@RequestMapping(value = "/employees", produces = 
MediaType.APPLICATION_XML_VALUE, method = RequestMethod.GET)
public String getAllEmployeesXML(Model model) 
{
model.addAttribute("employees", getEmployeesCollection());
return "xmlTemplate";
}

REST 客户端代码

private static void getEmployees()
{
final String uri = "http://localhost:8080/springrestexample/employees";
RestTemplate restTemplate = new RestTemplate();
EmployeeListVO result = restTemplate.getForObject(uri, 
EmployeeListVO.class);
System.out.println(result);

}

5) 在网址中传递参数

REST API 代码

@RequestMapping(value = "/employees/{id}")
public ResponseEntity<EmployeeVO> getEmployeeById (@PathVariable("id") 
int id) 
{
if (id <= 3) {
EmployeeVO employee = new 
EmployeeVO(1,"Lokesh","Gupta","howtodoinjava@gmail.com");
return new ResponseEntity<EmployeeVO>(employee, HttpStatus.OK);
}
return new ResponseEntity(HttpStatus.NOT_FOUND);
}

REST 客户端代码

private static void getEmployeeById()
{
final String uri = 
"http://localhost:8080/springrestexample/employees/{id}";
Map<String, String> params = new HashMap<String, String>();
params.put("id", "1");
RestTemplate restTemplate = new RestTemplate();
EmployeeVO result = restTemplate.getForObject(uri, EmployeeVO.class, 
params);
System.out.println(result);
}

HTTP POST 方法示例

REST API 代码

@RequestMapping(value = "/employees", method = RequestMethod.POST)
public ResponseEntity<String> createEmployee(@RequestBody EmployeeVO 
employee) 
{
System.out.println(employee);
return new ResponseEntity(HttpStatus.CREATED);
}

REST 客户端代码

private static void createEmployee()
{
final String uri = "http://localhost:8080/springrestexample/employees";
EmployeeVO newEmployee = new EmployeeVO(-1, "Adam", "Gilly", 
"test@email.com");
RestTemplate restTemplate = new RestTemplate();
EmployeeVO result = restTemplate.postForObject( uri, newEmployee, 
EmployeeVO.class);
System.out.println(result);
}

HTTP PUT 方法示例

REST API 代码

@RequestMapping(value = "/employees/{id}", method = RequestMethod.PUT)
public ResponseEntity<EmployeeVO> updateEmployee(@PathVariable("id") 
int id, @RequestBody EmployeeVO employee) 
{
System.out.println(id);
System.out.println(employee);
return new ResponseEntity<EmployeeVO>(employee, HttpStatus.OK);
}

REST 客户端代码

private static void deleteEmployee()
{
final String uri = 
"http://localhost:8080/springrestexample/employees/{id}";
Map<String, String> params = new HashMap<String, String>();
params.put("id", "2");
EmployeeVO updatedEmployee = new EmployeeVO(2, "New Name", "Gilly", 
"test@email.com");
RestTemplate restTemplate = new RestTemplate();
restTemplate.put ( uri, updatedEmployee, params);
}

HTTP 删除方法示例

REST API 代码

@RequestMapping(value = "/employees/{id}", method = 
RequestMethod.DELETE)
public ResponseEntity<String> updateEmployee(@PathVariable("id") int 
id) 
{
System.out.println(id);
return new ResponseEntity(HttpStatus.OK);
}

REST 客户端代码

private static void deleteEmployee()
{
final String uri = 
"http://localhost:8080/springrestexample/employees/{id}";
Map<String, String> params = new HashMap<String, String>();
params.put("id", "2");
RestTemplate restTemplate = new RestTemplate();
restTemplate.delete ( uri,  params );
}

相关内容

  • 没有找到相关文章

最新更新