2013-05-29 1 views
0

이 문제와 관련된 많은 질문이 있지만 PHP에서 Rest Web Service로 데이터를 게시하는 특정 요구 사항에 직면하고 있습니다. 세부 사항은 위에서 설명했지만 요약하면 URL (REST WS)에 데이터를 게시하고 CURLOPT_POSTFIELDS를 설정하면 데이터가 요청에 추가되지 않습니다.PHP post 데이터가 Java Rest Web Service를 호출하도록 설정되지 않음

시나리오 : Java Web Services (REST)가 모듈로 실행되는 경우가 많습니다. 예를 들어, REST 인 fileUploadModule을 가지고 있고 또 다른 나머지 databaseModule과 마지막으로 SearchModule을 가지고 있습니다. 휴식. 파일 및 데이터베이스의 경우를 들어

http://[MY IP]:8020/system.file.ws.module.ModuleFile/getResults/jsonp?fileName=fileName 
http://[MY IP]:8021/system.search.ws.module.ModuleSearch/getResults/jsonp?xmlQuery=myXml 

, 나를 통해 모듈에 연결 GWT를 사용하기 전에 코드를 관리 한 프로그래머 :

내가 좋아하는 링크를 사용하여 직접 내 나머지 모듈을 호출 할 수 있습니다 대리; 예를 들면 :

http://[MY_PROXY_IP]:8013/system.file.ws.module.ModuleFile/getResults/jsonp?fileName=fileName 

내 프록시에 나는이 경우에 나는 GET을 사용하여 요청의 값이 받아 인쇄 할 수 있습니다와 나는 같은 요청을 인쇄 할 수 있습니다

GET /system.file.ws.module.ModuleFile/getResults/jsonp?fileName=idc1&folderType=campaign&callback=__gwt_jsonp__.P0.onSuccess&failureCallback=__gwt_jsonp__.P0.onFailure HTTP/1.1 

합니다. 이제는 PHP를 통해 실행해야하는 검색에 대한 책임이 있습니다. 나는 모듈에 직접 URL을 테스트하고 그것을 작동하지만 나는 그것이 작동하는 것 같군하지 않는 프록시에 의해 그것을하려고하면, 내 프록시에 도달하지만 요청을 인쇄 할 때 그것은 불완전 :

POST /system.search.ws.module.ModuleSearch/getResults HTTP/1.1 

그리고 모듈 파일과 같은 것을 받아야한다. PHP 코드를 공유한다. 모두 괜찮아 보이지만, 내가 틀린 일을 할 수 있는지 모르겠다. CURLOPT_POSTFIELDS에서 매개 변수를 설정할 때 문자열이 아니다.

$url = "http://192.168.3.41:8013/system.search.ws.module.ModuleSearch/getResults"; 
try { 
$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_POST, 1); 
$rawXml = $_POST['rawXml']; 
$rawXml = str_replace("%", "%25", $rawXml); 
$rawXml = str_replace("&", "%26", $rawXml); 
$rawXml = str_replace("=", "%3D", $rawXml); 
echo $rawXml; 
curl_setopt ($ch, CURLOPT_POSTFIELDS,'xmlQuery='.$rawXml); 
$info = curl_exec ($ch); 
curl_close ($ch); 
echo $info; 
} catch (Exception $e){ 
echo $e->getMessage(); 
} 

설정되고 난 정말 당신의 도움이나 관찰을 부탁드립니다하시기 바랍니다. 당신보다 훨씬 앞서.

+0

커맨드 라인에서 말았습니까? 예 : '컬 --data "XMLQUERY = {XMLQUERY}에"http : //192.168.3.41 : 터미널 (8013)/system.search.ws.module.ModuleSearch/getResults' –

+0

네,하지만 난이없는 명령을 사용할 수 . –

답변

0

오랜 시간이 지난 후에, 나는 대답없이 이것을 보았다. 나는 얼마 전에이 실패를 발견했다. 이 문제는 서버 측에 도달 할 때 왠지 이유가있어서 배치 파일이 내 콘텐츠에 추가 선을 추가하는 것이었기 때문에 발생했으며 프록시로 요청 콘텐츠를 읽을 때마다 "\ n"구분 기호를 사용했기 때문에 말하자면, EOF 표시기로 라인 점프를 사용하여 데이터를 읽었으므로 그 내용이 표시되지 않았습니다. "\ n"문자를 찾을 때가 아니라 끝까지 요청을 읽을 수 있도록 프록시 내 코드를 수정해야했습니다. 즉, 모든 경우에 게시물 내용이 설정되었지만 일괄 처리로 인해 해당 데이터가 손상되었습니다. 그래서 thata가 문제였습니다. 필자는 독자가 항상 줄 건너 뛰기와 흰 줄을 고려하여 내 전체 파일을 읽도록하여 해결했습니다.

감사합니다.

관련 문제