কীভাবে কার্ল সহ পিএসপি তে জেএসএন পোস্ট করবেন


108

আমি বেস বন্ধ হতে পারে, কিন্তু আমি এই অবকাশ পিএইচপি ফ্রেমওয়ার্ক টিউটোরিয়ালে কার্ল পোস্ট কমান্ড চালানোর জন্য সমস্ত বিকেলে চেষ্টা করেছি । আমি যা বুঝতে পারি না তা হল পিএইচপি কীভাবে আমার পোস্টের ব্যাখ্যা দেবে, এটি সর্বদা খালি অ্যারে হিসাবে আসে।

curl -i -X POST -d '{"screencast":{"subject":"tools"}}'  \
      http://localhost:3570/index.php/trainingServer/screencast.json

(সেখানে স্ল্যাশটি কেবল আমাকে নির্বোধের মতো না দেখানোর জন্য, তবে আমি পিএইচপি 5.2 ব্যবহার করে উইন্ডোজ থেকে এটি সম্পাদন করেছি, লিনাক্স সার্ভারেও চেষ্টা করেছি, একই সংস্করণ লিনাক্স কার্ল সহ)

আমি অনুপস্থিত কিছু থাকতে হবে কারণ এটি বেশ সহজবোধ্য বলে মনে হচ্ছে, পোস্টটি কেবল সঠিকভাবে ব্যাখ্যা করা হয়নি, যদি এটি হয় তবে সবকিছু দুর্দান্ত কাজ করবে।

এই আমি ফিরে পেতে:

HTTP / 1.1 409 সংঘাত
তারিখ: শুক্র, 01 মে 2009 22:03:00 GMT
সার্ভার: অ্যাপাচি / 2.2.8 (উইন 32) পিএইচপি / 5.2.6
এক্স দ্বারা চালিত: পিএইচপি / 5.2.6
স্থানান্তর-এনকোডিং: খণ্ডিত
সামগ্রী-প্রকার: পাঠ্য / এইচটিএমএল; অক্ষরসেট = iso- 8859-1

{ "স্ক্রীণকাস্ট": { "ID": ফাঁকা, "বিষয়": নাল, "শরীরের": নাল,
         "DataUrl": নাল, "dataMedium": নাল, "createdOn": নাল, "লেখক": নাল}}

আপনি কি দয়া করে আপনার .pp ফাইলটি অনুলিপি করতে পারেন? আপনি কি নিশ্চিত যে ইউআরএল লোকালহোস্ট: 3570 / index.php / প্রশিক্ষণ সার্ভার / স্ক্রিনকাস্ট.জসন আপনার স্ক্রিপ্টটি চালায়? এটি কোনও পিএইচপি ইউআরএলের মতো দেখাচ্ছে না।
পিটিএস

@pts; পিটার কোনও ধরণের এমভিসি কাঠামো ব্যবহার করছেন, সেই ইউআরএলটিতে সূচি.এফপি দেখুন।
অ্যালান ঝড়

@pts আমি পিএইচপি (সুতরাং: 3570) এবং রেসেস এমভিসি ফ্রেমওয়ার্ক w / আউট। htaccess ফাইলের জন্য ডেলফি ব্যবহার করছি, সুতরাং সূচক.পিএফপি / ইউআরএলটিতে।
পিটার টার্নার

7
যেমন প্রেরণ করতে ভুলবেন না application/json
গম্বো

1
সাধারণগুলিতে এম্বেড করার সময় ডাবল উদ্ধৃতিগুলি এড়াতে হবে না।

উত্তর:


107

Ans _POST- অ্যারেটি কেন জনবহুল নয় তা নিয়ে জর্দান বিশ্লেষণ সঠিক। তবে, আপনি ব্যবহার করতে পারেন

$data = file_get_contents("php://input");

কেবলমাত্র HTTP বডিটি পুনরুদ্ধার করতে এবং এটিকে নিজেই পরিচালনা করতে। দেখুন পিএইচপি ইনপুট / আউটপুট স্ট্রিম

একটি প্রোটোকল দৃষ্টিকোণ থেকে এটি আসলে আরও সঠিক, যেহেতু আপনি যে কোনও উপায়ে http মাল্টিপার্ট ফর্ম ডেটা প্রক্রিয়া করছেন না। এছাড়াও, আপনার অনুরোধ পোস্ট করার সময় কন্টেন্ট-টাইপ হিসাবে অ্যাপ্লিকেশন / জসন ব্যবহার করুন।


7
Json_decode (ফাইল_জেট_কন্টেন্টস ("পিএইচপি: // ইনপুট"), সত্য) কাজ করে worked ধন্যবাদ
পিটার টার্নার

সত্যিই আমার পরিস্থিতি পাশাপাশি সাহায্য! ধন্যবাদ এমিল এইচ!
স্টিভ

চমত্কার। এটি পোস্টটি সরিয়ে দিচ্ছে ভেবে জেন্ডের সাথে আমার অনেক সমস্যা হচ্ছে .. একটি সাধারণ নিষ্কাশন যা আমার পক্ষে কাজ করেছিল। পিটার টার্নার্স জোসন_ডেকোড সংযোজন () একটি \ স্টডি ক্লাস অবজেক্ট সরবরাহ করে। আমি এটিকে গারমিন এপিআই পিং প্রতিক্রিয়াগুলির জন্য ব্যবহার করেছি
JI-Web

120

সাধারণত প্যারামিটারটি -dফর্ম-এনকোড হিসাবে ব্যাখ্যা করা হয়। আপনার -Hপ্যারামিটারটি দরকার :

curl -v -H "Content-Type: application/json" -X POST -d '{"screencast":{"subject":"tools"}}' \
http://localhost:3570/index.php/trainingServer/screencast.json

18

আমি বিশ্বাস করি আপনি একটি খালি অ্যারে পাচ্ছেন কারণ পিএইচপি আশা করে পোস্ট করা ডেটা কোয়েরিস্ট্রিং ফর্ম্যাটে (কী = মান এবং কী 1 = মান 1) থাকবে।

আপনার কার্ল অনুরোধটি এখানে পরিবর্তন করার চেষ্টা করুন:

curl -i -X POST -d 'json={"screencast":{"subject":"tools"}}'  \
      http://localhost:3570/index.php/trainingServer/screencast.json

এবং দেখুন এটি কোনও সাহায্য করে কিনা if


হ্যাঁ, -H "Content-Type: application/json"আমার পক্ষে কাজ করেনি।
পিজে ব্রুনেট

13

আপনাকে কয়েকটি অতিরিক্ত পতাকা সেট করতে হবে যাতে কার্লটি JSON হিসাবে ডেটা প্রেরণ করে।

হুকুম

$ curl -H "Content-Type: application/json" \
       -X POST \
       -d '{"JSON": "HERE"}' \
       http://localhost:3000/api/url

পতাকা

  • -H: কাস্টম শিরোলেখ, পরবর্তী যুক্তি শিরোনাম হবে বলে আশা করা হচ্ছে
  • -X: কাস্টম HTTP ক্রিয়া, পরবর্তী যুক্তিটি ক্রিয়া হিসাবে প্রত্যাশিত
  • -d: এইচটিটিপি পোস্ট অনুরোধে পরবর্তী যুক্তিটি ডেটা হিসাবে প্রেরণ করে

সম্পদ


1

আপনার এই জাতীয় উক্তিগুলি এড়ানো উচিত:

curl -i -X POST -d '{\"screencast\":{\"subject\":\"tools\"}}'  \
  http://localhost:3570/index.php/trainingServer/screencast.json

উইন্ডোজে এটি আসলে আমার পক্ষে কাজ করেছিল তবে পুরো জসন স্ট্রিংটি আবদ্ধ করতে ডাবল কোট ব্যবহার করে।
মাংসপোস্ট

উইন্ডোতে আপনাকে ডাবল উক্তিগুলি এড়াতে হবে যেমন উপরে জোসেফ পরামর্শ দিয়েছে। তিনি সঠিক.
বোবো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.