কৌণিক এইচটিপিপিলেট "পার্সিংয়ের সময় এইচটিটিপি ব্যর্থতা"


106

আমি কৌনিক 4 থেকে আমার লারাভেল ব্যাকএন্ডে একটি পোস্ট অনুরোধ প্রেরণের চেষ্টা করি।

আমার লগইন সার্ভিসে এই পদ্ধতি রয়েছে:

login(email: string, password: string) {
    return this.http.post(`http://10.0.1.19/login`, { email, password })
}

আমি আমার লগইনকম্পোন্টে এই পদ্ধতিটিতে সাবস্ক্রাইব করেছি:

.subscribe(
    (response: any) => {
        console.log(response)
        location.reload()
    }, 
    (error: any) => {
        console.log(error)
    })

এবং এটি আমার লারাভেল ব্যাকএন্ড পদ্ধতি:

...

if($this->auth->attempt(['email' => $email, 'password' => $password], true)) {
  return response('Success', 200);
}

return response('Unauthorized', 401);

আমার ক্রোম ডেভ সরঞ্জামগুলি বলে যে আমার অনুরোধটি 200 স্ট্যাটাস কোড সহ একটি সাফল্য ছিল। তবে আমার কৌনিক কোডটি ট্রিগার করেerror ব্লকটিকে এবং আমাকে এই বার্তাটি দেয়:

Http://10.0.1.19/api/login জন্য পার্সিংয়ের সময় এইচটিটিপি ব্যর্থতা

আমি যদি আমার ব্যাকএন্ড থেকে একটি খালি অ্যারে ফিরিয়ে দিই, এটি কাজ করে ... তাই অ্যাংুলার জেএসএন হিসাবে আমার প্রতিক্রিয়াটিকে পার্স করার চেষ্টা করছেন? আমি কীভাবে এটি অক্ষম করতে পারি?

উত্তর:


232

আপনি উল্লেখ করতে পারেন যে ফিরিয়ে দেওয়া ডেটাটি JSON ব্যবহার করছে নাresponseType

আপনার উদাহরণে, আপনি responseTypeএর textমতো স্ট্রিং মান ব্যবহার করতে পারেন :

return this.http.post(
    'http://10.0.1.19/login',
    {email, password},
    {responseType: 'text'})

বিকল্পগুলির সম্পূর্ণ তালিকাটি responseTypeহ'ল:

  • json (ডিফল্ট)
  • text
  • arraybuffer
  • blob

আরও তথ্যের জন্য ডক্স দেখুন ।



3

এমনকি প্রতিক্রিয়া টাইপ যোগ করেও, আমি কয়েক দিন সাফল্য না করেই এটি মোকাবিলা করেছি। অবশেষে আমি এটি পেয়েছি. আপনার ব্যাকএন্ড স্ক্রিপ্টে আপনি শিরোনামকে এই হিসাবে সংজ্ঞায়িত করছেন না তা নিশ্চিত করুন ("বিষয়বস্তুর ধরণ: অ্যাপ্লিকেশন / জেসসন);

আপনি যদি এটিকে পাঠ্যে পরিণত করেন তবে ব্যাকওয়েস জেসসনকে জিজ্ঞাসা করে, এটি একটি ত্রুটি ফিরিয়ে দেবে ...


এছাড়াও আপনি নতুন ক্লাস থেকে উদ্ভূত নতুন অবজেক্টের প্যারামিটার হিসাবে সেট করতে পারেন। তারপরে প্রতিক্রিয়া হিসাবে এই বস্তুটি ফিরিয়ে দিন। অর্থাৎ আপনি আপনার প্রতিক্রিয়াটি JSON ফর্ম্যাটে পরিবর্তন করতে পারেন
হোয়াইটফ্যাং

1

আপনার জেএসওএনও পরীক্ষা করা উচিত (দেবটুলগুলিতে নয়, তবে ব্যাকএন্ডে)। কৌণিক এইচটিপিপ্লিনেন্ট JSON এর সাথে পার্স করার জন্য বেশ কঠিন সময় কাটাচ্ছে\0 অক্ষর এবং তখন তা উপেক্ষা করবে, তাই এটি Chrome এ খুঁজে পাওয়া বেশ শক্ত।

এই নিবন্ধের উপর ভিত্তি করে


1

আমার একই সমস্যা ছিল এবং এর কারণটি ছিল আপনার ব্যাকএন্ডে (স্ট্রিং) স্ট্রিং ফেরার সময় আপনি সম্ভবত "বসন্ত ব্যবহৃত" হিসাবে ফিরে যাবেন; তবে বসন্তের অনুযায়ী এটি পার্স করা হয়নি। পরিবর্তে "spring" বসন্ত ব্যবহৃত \ "" ব্যবহার করুন; -শান্তি শেষ


পর্যালোচনা থেকে: হাই, এই পোস্টটি প্রশ্নের কোনও মানের উত্তর সরবরাহ করে বলে মনে হচ্ছে না । দয়া করে হয় আপনার উত্তরটি সম্পাদনা করুন এবং এটিকে উন্নত করুন বা একটি মন্তব্য হিসাবে এটি পোস্ট করুন।
সুনুন ןɐ কিউপ

ঠিক আছে .. উদাহরণস্বরূপ। আমার পরিস্থিতিতে আমি স্প্রিংকে ব্যাকএন্ড এবং আঙ্গুলের সম্মুখভাগে ব্যবহার করছিলাম। সঠিক প্রমাণীকরণের পরে আমার বসন্তের সার্ভারটি আমাকে একটি স্ট্রিং "বৈধ" ফিরিয়ে দিতে হবে যা লগইন তথ্য সঠিক হলেই প্রক্রিয়া করা হয়।
এভিআই

আমার প্রোগ্রামের সাথে সমস্যাটি একই রকম ছিল। পার্সিংয়ের সময় এইচটিটিপি ব্যর্থতা .... তখন আমি বুঝতে পেরেছিলাম যে বসন্তটি "আমার সার্ভারের প্রতিক্রিয়াটিকে" বিশেষ চরিত্র হিসাবে বিবেচনা করছে ence ওয়েবে "বৈধ" এবং \ স্বরলিপি পরিবর্তে "" "" of এর পরিবর্তে স্ট্রিং ver "\" \ "" এর উল্টা কমাতে রচিত একটি "(উল্টা কোমা) নির্দিষ্ট করতে ব্যবহৃত হয়} এবং সেই ত্রুটিটি আর কোথাও দেখা যায়নি..আমি আশা করি এটি এখন আরও পরিষ্কার হয়ে যাবে @ সুনুন ıɔ কিউপি
এভিআই

0

আমার কৌণিক প্রয়োগে আমি একই সমস্যার মুখোমুখি ছিলাম। আমি আমার অ্যাপ্লিকেশনটিতে রকেটচ্যাট REST এপিআই ব্যবহার করছিলাম এবং আমি এটিটি চেষ্টা করার চেষ্টা করছিলাম rooms.createDiscussionতবে নীচের মতো একটি ত্রুটি হিসাবে।

ERROR Error: Uncaught (in promise): HttpErrorResponse: {"headers":{"normalizedNames":{},"lazyUpdate":null},"status":200,"statusText":"OK","url":"myurl/rocketchat/api/v1/rooms.createDiscussion","ok":false,"name":"HttpErrorResponse","message":"Http failure during parsing for myrul/rocketchat/api/v1/rooms.createDiscussion","error":{"error":{},"text":"

আমি পরিবর্তনের মতো কয়েকটি বিষয় চেষ্টা করেছি responseType: 'text'কিন্তু সেগুলির কোনওটিই কাজ করে নি। শেষ পর্যন্ত আমি সমস্যাটি আমার রকেটচ্যাট ইনস্টলেশনটি সহ পেয়েছিলাম। রকেটচ্যাট পরিবর্তন হিসাবে উল্লিখিত হিসাবে API এ লগ করুনrooms.createDiscussion সংস্করণ 1.0.0 চালু করা হয় দুর্ভাগ্যবশত আমি একটি নিম্ন সংস্করণ ব্যবহার করা হয়েছে।

আমার পরামর্শটি হচ্ছে আপনার কৌণিক কোডটিতে ত্রুটিটি ঠিক করার জন্য সময় ব্যয় করার আগেই REST এপিআই ঠিকঠাক কাজ করছে কিনা তা যাচাই করা। আমি curlএটি পরীক্ষা করার জন্য কমান্ড ব্যবহার করেছি ।

curl -H "X-Auth-Token: token" -H "X-User-Id: userid" -H "Content-Type: application/json" myurl/rocketchat/api/v1/rooms.createDiscussion -d '{ "prid": "GENERAL", "t_name": "Discussion Name"}'

পাশাপাশি আমি প্রতিক্রিয়া হিসাবে একটি অবৈধ এইচটিএমএল পেয়েছিলাম।

<!DOCTYPE html>
<html>
<head>
<meta name="referrer" content="origin-when-crossorigin">
<script>/* eslint-disable */

'use strict';
(function() {
        var debounce = function debounce(func, wait, immediate) {

নিম্নলিখিত হিসাবে একটি বৈধ JSON প্রতিক্রিয়া পরিবর্তে।

{
    "discussion": {
        "rid": "cgk88DHLHexwMaFWh",
        "name": "WJNEAM7W45wRYitHo",
        "fname": "Discussion Name",
        "t": "p",
        "msgs": 0,
        "usersCount": 0,
        "u": {
            "_id": "rocketchat.internal.admin.test",
            "username": "rocketchat.internal.admin.test"
        },
        "topic": "general",
        "prid": "GENERAL",
        "ts": "2019-04-03T01:35:32.271Z",
        "ro": false,
        "sysMes": true,
        "default": false,
        "_updatedAt": "2019-04-03T01:35:32.280Z",
        "_id": "cgk88DHLHexwMaFWh"
    },
    "success": true
}

সুতরাং সর্বশেষতম রকেটচ্যাটে আপডেট করার পরে আমি উল্লিখিত REST এপিআই ব্যবহার করতে সক্ষম হয়েছি।

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