2009-05-16 44 views
94

Tôi làm cách nào để tạo một POST RAW trong PHP bằng cách sử dụng cURL?RAW POST bằng cách sử dụng cURL trong PHP

Bài đăng nguyên bản như trong không có bất kỳ mã hóa nào và dữ liệu của tôi được lưu trữ trong một chuỗi. Dữ liệu phải được định dạng như sau:

... usual HTTP header ... 
Content-Length: 1039 
Content-Type: text/plain 

89c5fdataasdhf kajshfd akjshfksa hfdkjsa falkjshfsa 
ajshd fkjsahfd lkjsahflksahfdlkashfhsadkjfsalhfd 
ajshdfhsafiahfiuwhflsf this is just data from a string 
more data kjahfdhsakjfhsalkjfdhalksfd 

Một tùy chọn là viết thủ công toàn bộ tiêu đề HTTP được gửi, nhưng dường như ít tối ưu hơn.

Dù sao, tôi có thể chuyển các tùy chọn tới curl_setopt() có sử dụng POST, sử dụng văn bản/đơn giản và gửi dữ liệu thô từ $variable không?

Trả lời

171

Tôi vừa tìm ra giải pháp, loại trả lời cho câu hỏi của chính mình trong trường hợp bất kỳ ai khác tình cờ gặp nó.

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL,   "http://url/url/url"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POST,   1); 
curl_setopt($ch, CURLOPT_POSTFIELDS,  "body goes here"); 
curl_setopt($ch, CURLOPT_HTTPHEADER,  array('Content-Type: text/plain')); 

$result=curl_exec ($ch); 
+4

php sẽ đặt tiêu đề có độ dài nội dung cho bạn hay bạn cũng nên đặt tiêu đề đó? –

+3

Tôi không thể làm việc này. Tôi có một trang mà tôi đang cố gắng đăng dữ liệu thô. Trang đó ghi lại tất cả dữ liệu thô mà nó nhận được vào một bảng cơ sở dữ liệu. Không có hàng mới nào cả. Bạn có biết nếu có bất cứ điều gì đã thay đổi ở đây kể từ '09? – James

+1

Điều này làm việc cho tôi, mà không chỉ định bất kỳ tiêu đề HTTP nào. – xryl669

Các vấn đề liên quan