문제

나는 이 시도하는 게시물에 대하여 공급업체의 서버를 사용하여 PHP5.2 컬.나 XML 문서 읽기를 게시물에 대하여 자신의 서버에서 읽고 응답:

$request = trim(file_get_contents('test.xml'));
$curlHandle = curl_init($servletURL);
curl_setopt($curlHandle, CURLOPT_POST, TRUE);
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, array('XML'=>$request));
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curlHandle, CURLOPT_HEADER, FALSE);  # Have also tried leaving this out
$response = curl_exec($curlHandle);

는 코드에서는 자체의 작동 확인,하지만 다른 서버에서 반환하는 응답의에서는 XML 파서는:

컨텐츠에서는 허용되지 않습 프롤로그

나는 오류하고 이것은 일반적으로 발생으로 공백 앞에 XML,그러나 나는 XML 파일 자체가 없는 공백과 trim()해야 하는 어쨌든.나 TCPDump 에 연결하는 동안 나는 코드고 이것은 무엇을 보낸다:

POST {serverURL} HTTP/1.1
Host: {ip of server}:8080
Accept: */*
Content-Length: 921
Expect: 100-continue
Content-Type: multipart/form-data; boundry:---------------------------01e7cda3896f

---------------------------01e7cda3896f
Content-Disposition: form-data; name="XML"

[SNIP - the XML was displayed]

---------------------------01e7cda3896f--

전후[싹둑]줄이 볼 때 공백을 재생 세션에서 미묘한 입니다.은 이 문제의 원고,그렇다면,그것을 어떻게 제거할 수 있습니다,또는 나는 너무 멀리고 이 문제가 될 수 있습으로 서버에 저는 게시물에 대하여?

도움이 되었습니까?

해결책 2

한 것으로 밝혀진다면 인코딩 문제입니다.이 앱은 분명히 필요 XML 에서 www-form-urlencoded 대의 형태 데이터를 변경했:

# This sets the encoding to multipart/form-data
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, array('XML'=>$request));

하기

# This sets it to application/x-www-form-urlencoded
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, 'XML=' . urlencode($request));

다른 팁

대답이 아니지만,나는 전체를 찾을 수 있 fopen/fread/fclose 일을 매우 지루한 정독을 찾을 때에는 코드입니다.

교체할 수 있습니다:

$file = 'test.xml';
$fileHandle = fopen($file, 'r');
$request = fread($fileHandle, filesize($file));
fclose($fileHandle);
$request = trim($request);

과:

$request = trim(file_get_contents('test.xml'));

하지만 어쨌든 당신의 질문;면 헤더를 보낸 다음,그것이 문제가되지 않과 원격 서버에 있습니다.도의 내용을 변경하신 xml 파일을 사용하여(위해서 var_dump 를)를 확인하기 위해 정확한 출력(을 포함하여 문자열의 길이를 볼 수 있도록 누락된 일)

희망하는 데 도움이

wc -m test.xml 으로 돌아왔 743 문자와 XML 파일 var_dump$request 으로 돌아온 742 문자는 그렇게 무언가가 벗겨지고 가 trim() (I assume).

았:

print "=====" . $request . "=====";

과의 시작과 끝 XML 꽁초에 대하여 오른쪽=====으로 백색의 공간입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top