2012-02-14 2 views
2

XML을 명령 줄 curl을 통해 서버에 게시 했으므로 완전히 성공적이었습니다. 실제로 설정하는 유일한 옵션은 content-type을 application/xml로 설정하는 헤더입니다.PHP Curl이 명령 줄 Curl처럼 작동하지 않습니다.

내가 돌아 서서 PHP에서 이것을 시도하면 500 서버 오류가 발생합니다.

curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/xml')); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $request); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 

은 심지어 지금까지 복사 명령 줄 컬로 PHP 응용 프로그램에서 XML 출력을 붙여하기로 갔어요 다음과 같이 내가하고 있어요 모든

지금까지와 같은 컬 옵션은 그것은 잘 작동합니다. 여러 가지 다른 조합의 다양한 컬 옵션을 사용해 보았습니다.

나는이 발생 인코딩 문제의 어떤 종류가 있지만 완전한에있어 내가 데이터에는 urlencoding 시도하고 내가 실제로 500

대신 잘못된 요청을 다시 얻을 수 추측이 있다면 그래서 누군가는 내가 그 (것)들을 듣는 것을 사랑할 아이디어가있는 경우에 손실이다.

감사합니다.

curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/xml')); 

에 :

+0

빠른 추가 : 서버 응답은 Null 예외 오류이지만 다시 보내지는 데이터는 동일해야합니다 ... – PetrolMan

+0

500은 일반적으로 간단한 구문 문제 회전 오류보고 기능을 제공하며 사용자는이를 쉽게 찾을 수 있습니다. – Zac

+0

죄송합니다. 분명히해야합니다. 500은 말풍선과 통신하고있는 서버입니다. – PetrolMan

답변

0

문제는 PHP가 아닙니다. 나는 서버의 오류 출력에 세심한주의를 기울이지 않았다. 커맨드 라인 curl은 트랜잭션 ID에 대한 데이터베이스 제약으로 매번 같은 장소에서 실패했지만 실제로 예상되는 출력을 표시하여 올바르게 작동한다고 생각하게되었습니다.

현재 시간, 분, 초를 트랜잭션 ID로 사용하고 있던 PHP는 명령 줄에서 실패 지점을 벗어나고 null 값에서 실패했습니다. 이는 실제로 XML에 문제가있었습니다. 문제는 null 값이 원격 서버의 코드에서 처리되지 않은 예외이므로 응답이 잘못되어 다른 것을 생각한 것입니다.

야생 거위 추격에 대한 도움과 죄송합니다.

1

봅니다에서 콘텐츠 형식 옵션을 수정하는

curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: text/xml')); 
+0

내 컬 핸들은 사실 $ curl 이름이고 수신 서버는 text/xml이 아닌 application/xml만을 사용한다는 점에서 매우 엄격합니다. – PetrolMan

+0

게시 할 URL을 지정 했습니까? – mlinuxgada

1

그것은 설치 한 컬 PHP가 같은 버전 일 필요는 없습니다 것을 주목할 필요가 하나는 당신이 서버에 설치했습니다. CLI ($ curl --version)에 설치 한 버전을 확인한 다음 <?php phpinfo();과 같은 형식으로 PHP를 확인하십시오.

+0

도움을 주셔서 감사합니다. 그러나 문제는 실제로 완전히 관련이 없습니다. 내 목표에 대한 오해의 예상 일뿐입니다. – PetrolMan

관련 문제