2012-05-14 4 views
1

PHP에서 fopen을 수행하는 데 문제가 있습니다. 저는 약 300kb의 데이터 집합을 Generic Handler (.ashx 파일)에 보냅니다. .Net 또는 PHP 측면의 솔루션을 환영합니다. 보낼 때 사용하는 코드 :PHP fopen 수신 계속 100 및 실패

function DoPostRequest($url, $data, $optional_headers = null) 
{ 
    $params = array('http' => array('method' => 'POST', 'content' => $data, 'header' => "Content-type: application/x-www-form-urlencoded\r\n" . 
        "Content-Length: " . strlen ($data) . "\r\n")); 
    if($optional_headers != null) { 
     $params['http']['header'] = $optional_headers; 
    } 
    $ctx = stream_context_create($params); 
    try { 
     ini_set ('user_agent', $_SERVER['HTTP_USER_AGENT']); 
     $fp = fopen($url, 'rb', false, $ctx); 
     $response = stream_get_contents($fp); 
    } catch (Exception $e) { 
     echo 'Exception: '.$e->getMessage(); 
    } 
    return $response; 
} 

.Net을 실행하는 웹 서버에 연결합니다. 문제는 요청이 시작되면 .Net 서버가 HTTP 1.1/100 Continue 응답을 보냅니다. 모든 것이 작동하는 작은 데이터 세트에서 잘 작동하지만 파일 크기가 크기 때문에 Continue가 .Net Framework에 의해 자동으로 입력된다고 가정합니다.

나는

와 C# 코드를 설정하는 노력도 포함하도록 Web.config 파일을 변경 한이의

<system.net> 
    <settings> 
    <servicePointManager expect100Continue="false" /> 
    </settings> 
</system.net> 

아무도이 일을하지 않았다,하지만. 따라서 PHP 쪽에서하고 싶습니다. 바닐라 PHP 설치 (cURL이 설치되지 않음)를 사용하고 있습니다. fopen을 무시하거나 100이 계속 될 것으로 예상하는 방법이 있습니까?

편집은 : 전체 오류 코드는 주어진 :

경고 : fopen을 (에 http : // localhost를 : 59396은/Testing.ashx) function.fopen] : HTTP 요청이 실패 이 스트림을 열지 못했습니다! HTTP는/1.1 100 C에서 계속 : \ XAMPP \ htdocs를 \ 72

+0

'http : // localhost : 59396/Testing.ashx'로 이동하면 어떻게됩니까? – Yaniro

답변

0

OK, 나는 내 자신에 고정 된 한 줄에 프로토 타입 \ Testing.php. 내장 Visual Studio 에뮬레이터 대신 IIS Express를 사용하도록 서버를 변경하면 모든 것이 잘 동작합니다. 오 잘!