Php curl lấy mã http

Tôi đã cố gắng sử dụng cURL trong PHP, nhưng bằng cách nào đó, mã HTTP trả về 0 thay vì bất kỳ mã phản hồi hợp lệ nào, chẳng hạn như 200, 500 hoặc 403

Đây là mã tôi đang sử dụng

$ch = curl_init[];
curl_setopt[$ch, CURLOPT_URL, $this->api . '/login'];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
curl_setopt[$ch, CURLOPT_CUSTOMREQUEST, 'POST'];
curl_setopt[$ch, CURLOPT_POSTFIELDS, $data];
curl_setopt[$ch, CURLOPT_HEADER, true];
curl_setopt[$ch, CURLOPT_FOLLOWLOCATION, true];
curl_setopt[$ch, CURLOPT_HTTPHEADER, [
    'Referer: ' . $this->api
]];
$httpcode = curl_getinfo[$ch, CURLINFO_HTTP_CODE];
$r = curl_exec[$ch];

curl_close[$ch];
        
if [$httpcode != 200] {
    throw new Exception['API returned HTTP code of ' . $httpcode];
}

Một số bạn có thể nhận thấy, lỗi nằm ở dòng 11 –

$ch = curl_init[];
curl_setopt[$ch, CURLOPT_URL, $this->api . '/login'];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
curl_setopt[$ch, CURLOPT_CUSTOMREQUEST, 'POST'];
curl_setopt[$ch, CURLOPT_POSTFIELDS, $data];
curl_setopt[$ch, CURLOPT_HEADER, true];
curl_setopt[$ch, CURLOPT_FOLLOWLOCATION, true];
curl_setopt[$ch, CURLOPT_HTTPHEADER, [
    'Referer: ' . $this->api
]];
$r = curl_exec[$ch];
$httpcode = curl_getinfo[$ch, CURLINFO_HTTP_CODE];

curl_close[$ch];
        
if [$httpcode != 200] {
    throw new Exception['API returned HTTP code of ' . $httpcode];
}
5

Dòng đó sẽ được gọi sau khi thực hiện cURL

Dung dịch

Giải pháp khá rõ ràng. Tôi cần gọi cho

$ch = curl_init[];
curl_setopt[$ch, CURLOPT_URL, $this->api . '/login'];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
curl_setopt[$ch, CURLOPT_CUSTOMREQUEST, 'POST'];
curl_setopt[$ch, CURLOPT_POSTFIELDS, $data];
curl_setopt[$ch, CURLOPT_HEADER, true];
curl_setopt[$ch, CURLOPT_FOLLOWLOCATION, true];
curl_setopt[$ch, CURLOPT_HTTPHEADER, [
    'Referer: ' . $this->api
]];
$r = curl_exec[$ch];
$httpcode = curl_getinfo[$ch, CURLINFO_HTTP_CODE];

curl_close[$ch];
        
if [$httpcode != 200] {
    throw new Exception['API returned HTTP code of ' . $httpcode];
}
6 sau
$ch = curl_init[];
curl_setopt[$ch, CURLOPT_URL, $this->api . '/login'];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
curl_setopt[$ch, CURLOPT_CUSTOMREQUEST, 'POST'];
curl_setopt[$ch, CURLOPT_POSTFIELDS, $data];
curl_setopt[$ch, CURLOPT_HEADER, true];
curl_setopt[$ch, CURLOPT_FOLLOWLOCATION, true];
curl_setopt[$ch, CURLOPT_HTTPHEADER, [
    'Referer: ' . $this->api
]];
$r = curl_exec[$ch];
$httpcode = curl_getinfo[$ch, CURLINFO_HTTP_CODE];

curl_close[$ch];
        
if [$httpcode != 200] {
    throw new Exception['API returned HTTP code of ' . $httpcode];
}
7

$ch = curl_init[];
curl_setopt[$ch, CURLOPT_URL, $this->api . '/login'];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
curl_setopt[$ch, CURLOPT_CUSTOMREQUEST, 'POST'];
curl_setopt[$ch, CURLOPT_POSTFIELDS, $data];
curl_setopt[$ch, CURLOPT_HEADER, true];
curl_setopt[$ch, CURLOPT_FOLLOWLOCATION, true];
curl_setopt[$ch, CURLOPT_HTTPHEADER, [
    'Referer: ' . $this->api
]];
$r = curl_exec[$ch];
$httpcode = curl_getinfo[$ch, CURLINFO_HTTP_CODE];

curl_close[$ch];
        
if [$httpcode != 200] {
    throw new Exception['API returned HTTP code of ' . $httpcode];
}

Vấn đề được giải quyết

$ch = curl_init[];
curl_setopt[$ch, CURLOPT_URL, $this->api . '/login'];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
curl_setopt[$ch, CURLOPT_CUSTOMREQUEST, 'POST'];
curl_setopt[$ch, CURLOPT_POSTFIELDS, $data];
curl_setopt[$ch, CURLOPT_HEADER, true];
curl_setopt[$ch, CURLOPT_FOLLOWLOCATION, true];
curl_setopt[$ch, CURLOPT_HTTPHEADER, [
    'Referer: ' . $this->api
]];
$r = curl_exec[$ch];
$httpcode = curl_getinfo[$ch, CURLINFO_HTTP_CODE];

curl_close[$ch];
        
if [$httpcode != 200] {
    throw new Exception['API returned HTTP code of ' . $httpcode];
}
8

$ch = curl_init[];
curl_setopt[$ch, CURLOPT_URL, $this->api . '/login'];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
curl_setopt[$ch, CURLOPT_CUSTOMREQUEST, 'POST'];
curl_setopt[$ch, CURLOPT_POSTFIELDS, $data];
curl_setopt[$ch, CURLOPT_HEADER, true];
curl_setopt[$ch, CURLOPT_FOLLOWLOCATION, true];
curl_setopt[$ch, CURLOPT_HTTPHEADER, [
    'Referer: ' . $this->api
]];
$r = curl_exec[$ch];
$httpcode = curl_getinfo[$ch, CURLINFO_HTTP_CODE];

curl_close[$ch];
        
if [$httpcode != 200] {
    throw new Exception['API returned HTTP code of ' . $httpcode];
}
9

 'Jane',
    'dateOfBirth' => '1974-8-17'
];

$curlHandle = curl_init['//domain-name/endpoint-path'];
curl_setopt[$curlHandle, CURLOPT_POSTFIELDS, $postParameter];
curl_setopt[$curlHandle, CURLOPT_RETURNTRANSFER, true];

$curlResponse = curl_exec[$curlHandle];
curl_close[$curlHandle];

0

 'Jane',
    'dateOfBirth' => '1974-8-17'
];

$curlHandle = curl_init['//domain-name/endpoint-path'];
curl_setopt[$curlHandle, CURLOPT_POSTFIELDS, $postParameter];
curl_setopt[$curlHandle, CURLOPT_RETURNTRANSFER, true];

$curlResponse = curl_exec[$curlHandle];
curl_close[$curlHandle];

1

 'Jane',
    'dateOfBirth' => '1974-8-17'
];

$curlHandle = curl_init['//domain-name/endpoint-path'];
curl_setopt[$curlHandle, CURLOPT_POSTFIELDS, $postParameter];
curl_setopt[$curlHandle, CURLOPT_RETURNTRANSFER, true];

$curlResponse = curl_exec[$curlHandle];
curl_close[$curlHandle];

2

 'Jane',
    'dateOfBirth' => '1974-8-17'
];

$curlHandle = curl_init['//domain-name/endpoint-path'];
curl_setopt[$curlHandle, CURLOPT_POSTFIELDS, $postParameter];
curl_setopt[$curlHandle, CURLOPT_RETURNTRANSFER, true];

$curlResponse = curl_exec[$curlHandle];
curl_close[$curlHandle];

3

 'Jane',
    'dateOfBirth' => '1974-8-17'
];

$curlHandle = curl_init['//domain-name/endpoint-path'];
curl_setopt[$curlHandle, CURLOPT_POSTFIELDS, $postParameter];
curl_setopt[$curlHandle, CURLOPT_RETURNTRANSFER, true];

$curlResponse = curl_exec[$curlHandle];
curl_close[$curlHandle];

4

 'Jane',
    'dateOfBirth' => '1974-8-17'
];

$curlHandle = curl_init['//domain-name/endpoint-path'];
curl_setopt[$curlHandle, CURLOPT_POSTFIELDS, $postParameter];
curl_setopt[$curlHandle, CURLOPT_RETURNTRANSFER, true];

$curlResponse = curl_exec[$curlHandle];
curl_close[$curlHandle];

5

 'Jane',
    'dateOfBirth' => '1974-8-17'
];

$curlHandle = curl_init['//domain-name/endpoint-path'];
curl_setopt[$curlHandle, CURLOPT_POSTFIELDS, $postParameter];
curl_setopt[$curlHandle, CURLOPT_RETURNTRANSFER, true];

$curlResponse = curl_exec[$curlHandle];
curl_close[$curlHandle];

6

 'Jane',
    'dateOfBirth' => '1974-8-17'
];

$curlHandle = curl_init['//domain-name/endpoint-path'];
curl_setopt[$curlHandle, CURLOPT_POSTFIELDS, $postParameter];
curl_setopt[$curlHandle, CURLOPT_RETURNTRANSFER, true];

$curlResponse = curl_exec[$curlHandle];
curl_close[$curlHandle];

7

 'Jane',
    'dateOfBirth' => '1974-8-17'
];

$curlHandle = curl_init['//domain-name/endpoint-path'];
curl_setopt[$curlHandle, CURLOPT_POSTFIELDS, $postParameter];
curl_setopt[$curlHandle, CURLOPT_RETURNTRANSFER, true];

$curlResponse = curl_exec[$curlHandle];
curl_close[$curlHandle];

8

 'Jane',
    'dateOfBirth' => '1974-8-17'
];

$curlHandle = curl_init['//domain-name/endpoint-path'];
curl_setopt[$curlHandle, CURLOPT_POSTFIELDS, $postParameter];
curl_setopt[$curlHandle, CURLOPT_RETURNTRANSFER, true];

$curlResponse = curl_exec[$curlHandle];
curl_close[$curlHandle];

9

0

1

TLS の Secure Remote Password [SRP] 認証は、 ローカルとリモートの双方が共通のシークレットを持っている場合に、 お互いを認証する方法を提供します。 TLS-SRP を使うためには、

25 と 
23 オプションも設定する必要があります。

PHP cURL là thư viện cho phép máy khách truy cập máy chủ từ xa thông qua URL. Nó gửi các yêu cầu HTTP đến điểm cuối từ một ứng dụng hoặc thành phần khác

Nó cho phép các lượt truy cập liên ứng dụng nhận được phản hồi qua mạng. Cơ chế này rất hữu ích để làm việc với các dịch vụ PHP RESTful, tương tác API, v.v.

Có nhiều trường hợp sử dụng trong đó bài đăng cURL PHP hoàn toàn phù hợp. Ví dụ,

  1. Trích xuất nội dung từ một trang web
  2. Chuẩn bị nguồn cấp dữ liệu từ các nguồn bên ngoài
  3. Các phương thức truy cập trực tiếp của API không có SDK

Ví dụ nhanh này cung cấp mã đơn giản để triển khai bài đăng cURL PHP

ví dụ nhanh

 'Jane',
    'dateOfBirth' => '1974-8-17'
];

$curlHandle = curl_init['//domain-name/endpoint-path'];
curl_setopt[$curlHandle, CURLOPT_POSTFIELDS, $postParameter];
curl_setopt[$curlHandle, CURLOPT_RETURNTRANSFER, true];

$curlResponse = curl_exec[$curlHandle];
curl_close[$curlHandle];

Ngoài ra, chúng ta sẽ xem thêm các ví dụ về trường hợp sử dụng của PHP cURL post request trong các phần sắp tới

Phần 1 – Khái niệm cơ bản về PHP cURL

Sau đây là các bước để thực hiện chu trình phản hồi yêu cầu cURL cơ bản của PHP

  • Khởi tạo phiên cURL
  • Đặt tùy chọn cURL
  • thực hiện yêu cầu
  • Đóng phiên

Làm cách nào để định cấu hình PHP cURL?

PHP chứa thư viện libcurl để tạo môi trường làm việc với cURL. Thư viện này sẽ được bật theo mặc định

Nếu không, hãy thực hiện các bước sau để bật mô-đun cURL PHP trong môi trường của bạn

  1. Mở tệp cấu hình PHP php. ban đầu
  2. Kiểm tra sự bắt đầu của
    9
  3. Bỏ dấu chấm phẩy [;] ở đầu dòng trên
  4. Khởi động lại máy chủ Apache

Đặt yêu cầu POST cURL PHP – Phương pháp thay thế

Có nhiều cách để gửi thông số bài viết PHP cURL

  1. định dạng JSON
  2. Chuỗi truy vấn HTTP
  3. Định dạng mảng POST

định dạng JSON

Chuỗi truy vấn HTTP

PHP cURL POST định dạng mảng

0 có thể có một mảng PHP để truyền tham số cho điểm cuối

"value1", "key2"=>"value2"];
 
?>

Đặt tùy chọn tiêu đề cURL

Để đặt tiêu đề PHP cURL, hằng số CURLOPT_HTTPHEADER được sử dụng. Tiêu đề cURL có thể có thêm thông tin. Các khóa sau đây là một số ví dụ để thêm các tùy chọn tiêu đề PHP cURL

  • Mã hóa chấp nhận
  • Kiểm soát bộ đệm
  • Chủ nhà
  • Loại nội dung
  • Ngôn ngữ chấp nhận
  • Đại lý người dùng

Chương trình này đặt các tùy chọn tiêu đề cURL để đặt loại nội dung. Cũng có các tùy chọn để gửi tiêu đề tùy chỉnh. Đó là gửi các cặp khóa-giá trị không chuẩn. Sử dụng tiền tố X- để gửi các tiêu đề không chuẩn. Ví dụ,

________số 8

Hằng số CURLOPT_HEADER được đặt với giá trị boolean true. Đó là để cho phép thông tin tiêu đề được đính kèm với phản hồi trả về

1 và 
0 sẽ gửi các giá trị qua bài đăng PHP cURL

$ch = curl_init[];
curl_setopt[$ch, CURLOPT_URL, $this->api . '/login'];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
curl_setopt[$ch, CURLOPT_CUSTOMREQUEST, 'POST'];
curl_setopt[$ch, CURLOPT_POSTFIELDS, $data];
curl_setopt[$ch, CURLOPT_HEADER, true];
curl_setopt[$ch, CURLOPT_FOLLOWLOCATION, true];
curl_setopt[$ch, CURLOPT_HTTPHEADER, [
    'Referer: ' . $this->api
]];
$r = curl_exec[$ch];
$httpcode = curl_getinfo[$ch, CURLINFO_HTTP_CODE];

curl_close[$ch];
        
if [$httpcode != 200] {
    throw new Exception['API returned HTTP code of ' . $httpcode];
}
2

PHP cURL POST để tải tệp lên

Cũng có thể tải tệp lên máy chủ thông qua bài đăng PHP cURL. Đoạn mã dưới đây cho biết cách tải tệp hình ảnh lên máy chủ

Nó chuẩn bị đối tượng với dữ liệu tệp. Nó sử dụng hàm PHP curl_file_create[] để chuẩn bị nội dung bài đăng tệp

Bằng cách gửi gói ‘fileParam’ theo cách này, mã điểm cuối có thể truy cập nó qua mảng $_FILES[]

$ch = curl_init[];
curl_setopt[$ch, CURLOPT_URL, $this->api . '/login'];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
curl_setopt[$ch, CURLOPT_CUSTOMREQUEST, 'POST'];
curl_setopt[$ch, CURLOPT_POSTFIELDS, $data];
curl_setopt[$ch, CURLOPT_HEADER, true];
curl_setopt[$ch, CURLOPT_FOLLOWLOCATION, true];
curl_setopt[$ch, CURLOPT_HTTPHEADER, [
    'Referer: ' . $this->api
]];
$r = curl_exec[$ch];
$httpcode = curl_getinfo[$ch, CURLINFO_HTTP_CODE];

curl_close[$ch];
        
if [$httpcode != 200] {
    throw new Exception['API returned HTTP code of ' . $httpcode];
}
3

Đặt mã điểm cuối sau vào máy chủ. Sau đó nhấn điểm cuối thông qua tập lệnh cURL ở trên. Yêu cầu bài đăng cuộn tròn PHP gửi đầu vào tệp đến điểm cuối này. Mã PHP này truy cập tệp đã tải lên từ mảng $_FILES

php-curl-post-file-endpoint. php

$ch = curl_init[];
curl_setopt[$ch, CURLOPT_URL, $this->api . '/login'];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
curl_setopt[$ch, CURLOPT_CUSTOMREQUEST, 'POST'];
curl_setopt[$ch, CURLOPT_POSTFIELDS, $data];
curl_setopt[$ch, CURLOPT_HEADER, true];
curl_setopt[$ch, CURLOPT_FOLLOWLOCATION, true];
curl_setopt[$ch, CURLOPT_HTTPHEADER, [
    'Referer: ' . $this->api
]];
$r = curl_exec[$ch];
$httpcode = curl_getinfo[$ch, CURLINFO_HTTP_CODE];

curl_close[$ch];
        
if [$httpcode != 200] {
    throw new Exception['API returned HTTP code of ' . $httpcode];
}
2

Yêu cầu HTTP GET để lấy một trang web

Trong yêu cầu cURL, phương thức mặc định là GET. Chương trình này gọi máy chủ qua cURL với phương thức yêu cầu GET mặc định

Không giống như PHP cURL POST, nó gửi dữ liệu dưới dạng chuỗi truy vấn. Để truyền tham số cho yêu cầu GET, nó phải được xây dựng như một phần của URL

Nó lấy HTML của trang web được chỉ định làm điểm cuối cURL. Nó in phản hồi và hiển thị HTML của trang web mục tiêu trong trình duyệt

Làm cách nào để lấy mã HTTP từ cURL trong php?

php $ch = curl_init[$url];

Làm cách nào để nhận mã phản hồi HTTP trong php?

Dành cho phiên bản PHP 4. 0. Để gửi mã phản hồi HTTP, chúng tôi cần tập hợp mã phản hồi. Để đạt được điều này, hãy sử dụng hàm header[] . Hàm header[] chứa trường hợp sử dụng đặc biệt có thể phát hiện dòng phản hồi HTTP và thay thế bằng dòng tùy chỉnh. tiêu đề ["HTTP/1. 1 404 Không tìm thấy" ];

Làm cách nào để nhận mã trạng thái HTTP từ phản hồi cURL?

$ [curl --silent http. //www. ví dụ. org -o >[cat >&1] -w "%{http_code}" 1>&2] 1>/dev/null 200 $ [curl --silent http. //www. ví dụ. org -o >[cat >&1] -w "%{http_code}" 1>&2] 2>/dev/null

Làm cách nào để lấy mã trạng thái từ phản hồi cURL trong php?

Làm cách nào để có được trạng thái mã cURL trong PHP? .
$info = curl_getinfo[$ch, CURLINFO_HTTP_CODE];
curl_close[$ch];
nếu [$thông tin == 200]{
trả về json_decode[$result];

Chủ Đề