2017-12-20 7 views
0

전제로서 nodej를 사용하여 회사 포털 중 하나의 엔드 포인트를 작성했습니다. 이제 우리 포털 중 다른 하나에서 동일한 기능을 만들어야하지만이 포털은 PHP로 작성되었습니다 ... 그리고 나는 PHP에 매우 익숙합니다.여러 키를 가진 객체를 만들고 PHP로 전달하는 방법 curl http post

나는 잘 작동하지만 엉뚱한 것처럼 보이고 끝점에서 내가 필요한 것을 꺼내기 위해 문자열 조작을해야만한다. 또한, 나는 내가 의도 한 방식으로 컬을 사용하지 않을 것이라고 확신합니다. 어떤 도움을 주시면 감사하겠습니다.

: 여기

내가

$params = array('userID' => $userID, 'UnitID' => $unitid); 
foreach ($params as $key => $value) { 
    $params .= $key . "=" . $value . "&"; 
} 

$url = 'https://10.4.2.31:4000/api/TestCurl/' . $params; 

$ch = curl_init(); 
curl_setopt($ch,CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch,CURLOPT_POST,2); 
curl_setopt($ch,CURLOPT_POSTFIELDS, $params); 
$result = curl_exec($ch); 
print $result; 
curl_close($ch); 

내가 노드지고있어 결과의 예

{ 'ArrayuserID = 12345678 & UnitID = ABC1234 &'PARAMS}입니다 무슨이다

내 테스트 엔드 포인트는 다음과 같습니다.

app.post('/api/TestCurl/:params', UserCtrl.TestCurl); 
+0

힌트 :'json_encode'는 데이터 트리를 인코딩하는 데 적합합니다. – cHao

+0

귀하의 말풍선은 귀하의 게시물을 말하고 있지만 매개 변수는 URL에 있습니까? 그래서 당신은 무엇을 원하니? – rtfm

+0

@rtfm 어느 쪽이든 가장 깨끗한 것이 좋습니다. 어떤 방법으로 하시겠습니까? – joshbang

답변

0

http_build_query()을 사용하여 배열을 컬링에 사용할 형식으로 변환 할 수 있습니다. 소식 요청

: 사용자가주는 출력

$params = array('userID' => $userID, 'UnitID' => $unitid); 
$fields_string = http_build_query($params); 
// ... 
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); 

이유는 foreach 루프 내부 문자열로 연접 후 배열로 $params을 정의되지만이다. 루프 내에서 다른 변수 이름을 사용하면 접근 방식이 효과적입니다.

+0

나는 그것을 시도했지만 여전히 노드에 userID와 UnitID를 전달하지 않을 것이다. 내가 할 수 있었던 유일한 방법은 URL을 통해 매개 변수를 전달하는 것입니다. 그러나 그것은 나에게 거칠게 느껴진다. 나는 노드가 어떻게 든 그것을 볼 수 없다면, 아니면 내 컬 코드가 잘못인지 모른다. :/ – joshbang

+0

또한 루프에서 변수의 이름을 바꾸려고 시도했지만 여전히 "{params : 'ArrayuserID = 12345678 & UnitID = ABC1234 &'} '를 req.params 값으로 사용합니다. – joshbang

+0

나는 당신이 지금 말하고있는 것을 보았습니다. 다른 변수를 사용하면 "배열"과 req.params의 시작 부분이 제거됩니다. 아직도 그것을하는 나의 이상적인 방법은 아니지만, 그것의 "배열"부분을 해결 하하. 감사! – joshbang