Câu hỏi Curl GET yêu cầu với tham số json


Tôi đang cố gắng gửi một yêu cầu "GET" đến một REST API từ xa từ Command Prompt thông qua cURL như sau:

curl -X GET -H "Content-type: application/json" -H "Accept: application/json"  "http://server:5050/a/c/getName/{"param0":"pradeep"}"

Nhưng nó không trả về đầu ra. Tôi đã cố gắng ping URL trực tiếp từ trình duyệt, tôi có thể nhận được phản hồi thành công, tôi không hiểu những gì là sai với lệnh.

Về cơ bản tôi muốn thiết lập một yêu cầu "GET" cho một dịch vụ REST từ xa cung cấp cho tôi dữ liệu json như một phản hồi thông qua curl. Bất cứ ai có thể hướng dẫn tôi những gì sai lầm tôi đang làm? Tôi đã thử các bài viết khác nhau, nhưng tất cả chúng đều nói về các yêu cầu POST không phải về GET.


76
2018-01-24 06:59


gốc


những lỗi nào đang được đăng ở phía máy chủ của bạn? - Scary Wombat
Không có lỗi, phía máy chủ nó đang thực hiện thành công. Nhưng từ phía curl nó không hiển thị anydata. Nó chỉ ping sau vài giây nó chỉ hiển thị trống không có dữ liệu. - Pradeep Simha
bạn có thể thử với curl -i -H "Accept: application / json" "máy chủ: 5050 / a / c / getName{"param0": "pradeep"} "(tùy chọn -i thay vì x). - Harshal Bulsara
@HarshalBulsara tuyệt vời! đã hoạt động. Nếu bạn đăng nó như là câu trả lời tôi có thể bỏ phiếu và chấp nhận :) - Pradeep Simha


Các câu trả lời:


Điều này sẽ hoạt động:

  curl -i -H "Accept: application/json" "server:5050/a/c/getName{"param0":"pradeep"}" 

tùy chọn người dùng -i thay vì x.


102
2018-01-24 07:15



có lẽ báo giá khác nhau? "máy chủ: 5050 / a / c / getName {'param0': 'pradeep'}" - A B
Nó thực sự nên là một trong hai 'server:5050/a/c/getName{"param0":"pradeep"}' hoặc là "server:5050/a/c/getName{\"param0\":\"pradeep\"}". - Benjamin W.


Nếu bạn muốn gửi dữ liệu của bạn bên trong cơ thể, sau đó bạn phải thực hiện một POST hoặc là PUT thay vì GET.

Đối với tôi, có vẻ như bạn đang cố gửi truy vấn với tham số uri, không liên quan đến GET, bạn cũng có thể đặt các thông số này POST, PUT và vân vân.

Truy vấn là một phần tùy chọn, được phân tách bằng dấu chấm hỏi ("?"), Có chứa thông tin nhận dạng bổ sung không có thứ tự phân cấp. Cú pháp chuỗi truy vấn không được định nghĩa chung, nhưng nó thường được tổ chức dưới dạng một chuỗi = cặp, với các cặp được phân tách bằng dấu chấm phẩy hoặc dấu và.

Ví dụ:

curl http://server:5050/a/c/getName?param0=foo&param1=bar

13
2018-01-24 07:34



Bất kỳ thông điệp yêu cầu HTTP nào đều được phép chứa nội dung thư. Nó không bao giờ hữu ích cho GET vì ngữ nghĩa GET - nội dung của phần thân yêu cầu, nếu có, không nên thay đổi phản hồi. - Jarek Przygódzki


GET nhận cặp giá trị tên.

Hãy thử một cái gì đó như:

curl http://server:5050/a/c/getName/?param1=pradeep

hoặc là

curl http://server:5050/a/c/getName?param1=pradeep

btw một REST thông thường sẽ trông giống như

curl http://server:5050/a/c/getName/pradeep Nếu nó lấy JSON trong GET URL, nó không phải là một cách tiêu chuẩn.


7
2018-01-24 07:11





Đối với dịch vụ được bảo vệ bằng mật khẩu và tên người dùng, hãy sử dụng

curl -u admin:password -X GET http://172.16.2.125:9200 -d '{"sort":[{"lastUpdateTime":{"order":"desc"}}]}'

5
2018-03-21 00:11



curl -X POST -H "Kiểu nội dung: application / json" -d '{"stuff": "things"}' http: // ... - keithpjolley


Thử

curl -G ...

thay vì

curl -X GET ...

Thông thường bạn không cần tùy chọn này. Tất cả các loại yêu cầu GET, HEAD, POST và PUT đều được gọi bằng cách sử dụng các tùy chọn dòng lệnh chuyên dụng.

Tùy chọn này chỉ thay đổi từ thực tế được sử dụng trong yêu cầu HTTP, nó không thay đổi cách hành xử curl. Vì vậy, ví dụ nếu bạn muốn thực hiện một yêu cầu HEAD thích hợp, sử dụng -X HEAD sẽ không đủ. Bạn cần sử dụng tùy chọn -I, --head.


2
2017-08-14 00:41