2012-10-09 2 views
1

XML 파일을 POST를 통해 원격 서버의 양식에 보내려고합니다. XML 데이터를 즉시 생성하고 $ XmlData라는 변수에 문자열로 저장합니다. 이것은 내 여는 태그 (아래 예제 참조)로 시작하는 문자열이므로 ...이 문자열에는 "헤더"가 없습니다. XML 파일로 임시 디렉토리에 서버에 쉽게 쓸 수 있습니다 ...하지만 이상적으로 파일을 것처럼 게시 할 수 있지만 파일을 만드는 단계를 추가하지 않고 (다음에 할 것이다PHP를 사용하여 XML 파일을 생성하지 않고 cURL을 통해 XML을 게시합니다.

$url = 'http://www.mydomain.com/path/to/form/process.php'; 

    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_VERBOSE, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)"); 
    curl_setopt($ch, CURLOPT_URL, _VIRUS_SCAN_URL); 
    curl_setopt($ch, CURLOPT_POST, true); 
    // same as <input type="file" name="xmlfileresource"> 
    $post = array(
     "xmlfileresource"=>"@/path/to/myfile.xml", 
     "action"=>"incomingXml", 
     "user"=>"JohnSmith", 
    ); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
    $response = curl_exec($ch); 
    curl_close($ch); 

내 질문이 있습니다 ... 다음은 내가 실제로 먼저 만든 경우 내 XML 파일을 업로드 할 수 있도록해야한다고 생각 코드는 ...) afterwords 삭제 : 내가 스트리밍 할 수있는 방법/방울/어떤 이 cURL 실행에 대한 $ XmlData 문자열의 내용은 원격 서버가 POST되는 일반 파일 일 뿐이라고 생각합니까?

정말 관련 없음,하지만 경우에 그것은 ... 내 $의 XMLDATA 문자열은 다음과 같이 보일 수 있습니다 :

<clientversion> 
    <component> 
    <type>module</type> 
    <name>resources</name> 
    <version>2.7.3</version> 
    <date>2012-09-01 02:18:33</date> 
    </component> 
    <component> 
    <type>module</type> 
    <name>staff</name> 
    <version>3.1</version> 
    <date>2011-04-01 07:12:48</date> 
    </component> 
</clientversion> 
+2

http://stackoverflow.com/questions/3085990/post-a-file-string-using-curl-in-php는 내가 본 유일한 해결책입니다. 하지만 파일에 쓰는 것이 불행히도 여전히 깨끗해질 것이라고 생각합니다. –

+0

@Brenton Alker 나는 그 접근법이 단지 임시 파일을 사용하는 것보다 훨씬 더 awk하다고 동의한다. 너무 나쁘다 ... 나는 그 모든 것을 기억하고 싶다. 그러나 그것을 성취 할 실제 방법이 없다. 나는 그것을 파일에 쓰고, 게시하고, 파일을 삭제할 것이다. 감사. – techtheatre

답변

0

는 임시 파일을 작성할 필요까지 종료 후 임시 파일을 삭제 한 후 . 내가 기대했던 것만 큼 우아하지는 않지만 잘 작동한다. 링크를위한 Brenton Alker에게 감사합니다 ... 그러나 다른 포스트에서 개설 된 것처럼 그것을하는 것은 비현실적으로 보인다.

관련 문제