본문 바로가기

xml 통신(수신) - Web 언어별

MintState 2011년 3월 14일 오후 4:37 조회 16227

xml 통신(수신) - Web 언어별xml 통신(수신) - Web 언어별

$HTTP_RAW_POST_DATA
POST로 보낸 데이타를 받는 구문
일반적으로 변수는 name과 valule의 쌍으로 이루어지나 그렇지 않을 경우가 있다.
요즘 ajax 와 xml을 연동함에 있었어 이런 경우가 종종보여진다.
이럴경우 사용하는 것이 $HTTP_RAW_POST_DATA 다.

이때 php.ini 환경설정은
always_populate_raw_post_data On
이 되어 있어야 한다.

PHP 코드

<?php
$method = $_GET['method'];
$name = $_GET['name'];
if ( isset ( $GLOBALS["HTTP_RAW_POST_DATA"] ))
{
	// get bytearray
	$pdf = $GLOBALS["HTTP_RAW_POST_DATA"];

	// add headers for download dialog-box
	header('Content-Type: application/pdf');
	header('Content-Length: '.strlen($pdf));
	header('Content-disposition:'.$method.'; filename="'.$name.'"');
	echo $pdf;
}
else echo 'An error occured.';
?>

ASP 코드

<%
Dim FileSavePath ,ext, filename
FileSavePath = Server.MapPath(".")
ext = Mid(attFile, InstrRev(attFile, ".")+1)  '화일 확장자 추출
filename = "sample."& ext

intByteCnt = Request.TotalBytes			'데이터 블록의 총바이트 값이 들어감
strData  = Request.BinaryRead(intByteCnt)	'바이너리 스트림 데이타

If intByteCnt > 1 Then
'----------------------------------------------
' Binary 데이타를받아서 server에 화일로 저장시킴.
'----------------------------------------------
Set objStream = CreateObject("ADODB.Stream")
	objStream.Open()
	objStream.Type = 1  ' 1: binary 타입을 의미한다.
	objStream.Write strData
	objStream.SaveToFile FileSavePath &"\"& filename, 2  '2:덮어쓰기 허용
	Set objStream = nothing 
End if
%>

Java 코드

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class CreatePDFServlet extends HttpServlet
{
	public void doPost(HttpServletRequest req, HttpServletResponse resp)
	throws ServletException, IOException
	{
		doGet(req, resp);
	}
	public void doGet(HttpServletRequest req, HttpServletResponse resp)
	throws ServletException, IOException
	{
		int i = 0;
		int k = 0;
		int maxLength = req.getContentLength();
		byte[] bytes = new byte[maxLength];
		String method = req.getParameter("method");
		String name = req.getParameter("name");
		ServletInputStream si = req.getInputStream();
	while (true)
	{
		k = si.read(bytes,i,maxLength);
		i += k;
		if (k &lt;= 0)
		break;
	}
	if (bytes != null)
	{
		ServletOutputStream stream = resp.getOutputStream();
		resp.setContentType("application/pdf");
		resp.setContentLength(bytes.length);
		resp.setHeader("Content-Disposition",method + ";filename=" + name);
		stream.write(bytes);
		stream.flush();
		stream.close();
	}
	else
	{
		resp.setContentType("text");
		resp.getWriter().write("bytes is null");
	}
	}
}

출처 : http://devman.tistory.com/118

공유 X Facebook LINE QR 코드

댓글 0개

첫 댓글을 남겨보세요.