2016-07-08 3 views
0

내가 문자열 URL을 만드는 오전를 잘못 호출되는 :URL은 시작과 끝, 처음에는 두 날짜를 얻고, 외부 API에서 호출 할 수 PHP는

$start = new Carbon($request->date_start); 
$end = new Carbon($request->date_end); 

만 날짜 값은 $를 통과하고있다 요청 개체 (25/06/2016)

나는 다음 URL 문자열에이 값을 사용

$url = "https://www.api.com/KML/PositionHistory?fromDate=" . $start->toDateTimeString() . "&toDate=" . $end->addHours(24)->toDateTimeString(); 

를 URL 호출 :

: 그것은 다음과 같은 URL을 호출하려고하기 때문에 오류를 얻을 경우

$contents = file_get_contents($url); 

이것은을

https://www.api.com/KML/PositionHistory?fromDate=2016-07-17 00:00:00&toDate=2016-08-01 00:00:00 

문자열을 & 개 생성하는 중 어떻게 수정해야합니까?

날짜가 끝나면 시간이 필요합니다.

편집 :

타임 스탬프에 urlencode을 사용하여 다음과 같은 오류가 호출 결과 전 $url 트리밍 :

file_get_contents(https://www.api.com/KML/PositionHistory?fromDate=2016-07-17+00%3A00%3A00&toDate=2016-08-01+00%3A00%3A00): 

failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request 

그래서 여기에 좋아는 entiendoNull에 의해 반응로로 작동하는 그것을 가지고 무엇 :

http_build_query

를 사용하여 URL 구축하기 만하면됩니다.
+1

@Anant, 당신은 당신의 예에 추가 한' "'마지막은 잘못 거기해서는 안됩니다. 당신이 (편곡 $, '', '&') '구축 http_build_query'사용하는 경우 어떤 리안, '$ arr'은 매개 변수와 그 값을 포함하는 배열입니까? – entiendoNull

+0

@Anant 안녕하세요, 공백은 인용 부호 안에 들어가는 것이 아니라 앞뒤에 있기 때문에 가독성을 위해 공백은. – Riaan

+0

'echo $ start'와'echo $ end' 출력을 보여줍니다 –

답변

1

+0

그냥 조금 조정해야만했다. 게시물에서 내 대답을 확인하십시오. PHP 문서에서 예제를 얻었습니다. – Riaan

0

Carbon은 URL에서 잘못 처리되는 공백을 포함하는 타임 스탬프를 반환합니다. urlencode를 사용하여 URL에 배치하기 전에 타임 스탬프를 인코딩해야합니다. 그런 다음 수신 측에서 GET 데이터를 사용하기 전에 urldecode를 사용하십시오.

$start = new Carbon($request->date_start); 
$end = new Carbon($request->date_end); 

$url = "https://www.api.com/KML/PositionHistory?fromDate=" . urlencode($start->toDateTimeString()) . "&toDate=" . urlencode($end->addHours(24)->toDateTimeString()); 

$url = trim($url); // use trim 

$contents = file_get_contents($url); 
+0

안녕하세요, 제 편집을 확인하십시오. – Riaan

0

사용 urlencode()trim()이보십시오.

$arr = array('fromDate' => $start->toDateTimeString(),'toDate' => $end->addHours(24)->toDateTimeString()); 
$url = 'https://www.api.com/KML/PositionHistory?'; 
$url .= http_build_query($arr,'','&'); 


$contents = file_get_contents($url); 
+0

안녕하세요, 제 편집을 확인하십시오. – Riaan