자바 웹 서비스 인터페이스 방문, 헤드 정보 획득
웹 서 비 스 를 방문 하 는 방식: http 로 post 요청 을 직접 보 냅 니 다.
private String getXML(String time, String sign, String name) {
String xml="\r
" +
" \r
" +
" \r
" +
" "+time+" \r
" +
" "+sign+" \r
" +
" \r
" +
" \r
" +
" \r
" +
" \r
" +
" "+name+" \r
" +
" \r
" +
" \r
" +
" ";
return xml;
}
@ResponseBody
@RequestMapping("/getRes")
public String getRes() {
String url1 = "http://127.0.0.1:8011/demo/services/hello";
StringBuilder sb = new StringBuilder();
InputStream is = null;
InputStreamReader isr = null;
BufferedReader br = null;
OutputStream os = null;
try {
// :
URL url = new URL(url1);
//
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// :
//3.1 :POST
connection.setRequestMethod("POST");
//3.2 :content-type
connection.setRequestProperty("content-type", "text/xml;charset=utf-8");
//3.3 , connection ,
connection.setDoInput(true);
connection.setDoOutput(true);
// : SOAP ,
String time = "1568958856730";
String sign = "L69yyZXc6CwjXgpw5vE89AZFxTvGu6Rqr/62UbNFfHk=";
String name = " ";
String soapXML = getXML(time,sign,name);
os = connection.getOutputStream();
os.write(soapXML.getBytes());
// : ,
int responseCode = connection.getResponseCode();
if(responseCode==200){
is = connection.getInputStream();
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
sb = new StringBuilder();
String temp = null;
while(null != (temp = br.readLine())){
sb.append(temp);
}
}else{
sb.append(" ");
System.out.println(" , :"+responseCode);
return sb.toString();
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
is.close();
isr.close();
br.close();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
! :Fri Sep 20 15:34:21 CST 2019
2. 요청 정보 획득
import java.util.Enumeration;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.headers.Header;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
import org.apache.cxf.phase.PhaseInterceptorChain;
import org.apache.cxf.transport.http.AbstractHTTPDestination;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class WebServiceInterceptor extends AbstractPhaseInterceptor {
public WebServiceInterceptor() {
super(Phase.PRE_INVOKE);
}
@Override
public void handleMessage(SoapMessage soapMsg) throws Fault {
Message msg = PhaseInterceptorChain.getCurrentMessage();
HttpServletResponse response = (HttpServletResponse) msg.get(AbstractHTTPDestination.HTTP_RESPONSE);
HttpServletRequest request = (HttpServletRequest) msg.get(AbstractHTTPDestination.HTTP_REQUEST);
Enumeration headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = (String) headerNames.nextElement();
String header = request.getHeader(headerName);
System.out.println(headerName+":"+header);
}
System.out.println("===================================");
List headers = soapMsg.getHeaders();// soap
for (Header header : headers) {
Element ele = (Element) header.getObject();
NodeList nodeList = ele.getChildNodes();
for(int i = 0 ; i< nodeList.getLength();i++) {
String textContent = nodeList.item(i).getTextContent();
String nodename = nodeList.item(i).getNodeName();
System.out.println("nodename:"+nodename+";textContent:"+textContent);
}
}
}
}
//
@Bean
public Endpoint endpoint() {
//
EndpointImpl endpoint = new EndpointImpl(springBus(), getHelloWorld());
endpoint.publish("/hello");
endpoint.getInInterceptors().add(createCheckAuthInterceptor()); //
return endpoint;
}
@Bean
public Interceptor createCheckAuthInterceptor(){
return new WebServiceInterceptor();
}
차단 기 를 추가 한 후 인 터 페 이 스 를 방문 합 니 다. 콘 솔 인쇄 정 보 는 다음 과 같 습 니 다.
content-type:text/xml;charset=utf-8
cache-control:no-cache
pragma:no-cache
user-agent:Java/1.8.0_181
host:127.0.0.1:8011
accept:text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
connection:keep-alive
content-length:651
===================================
nodename:auth_rtime;textContent:1568958856730
nodename:auth_sign;textContent:L69yyZXc6CwjXgpw5vE89AZFxTvGu6Rqr/62UbNFfHk=
nodename:name;textContent:
프로젝트 에서 헤더 정 보 를 얻 는 문제 에 부 딪 혀 기록 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.