[英]JAVA - Process HttpClient request for Content-Type: application/json
希望每個人都做得很好。
問題 :每次通過POST請求調用api進行登錄時,都會得到以下響應
[status] => 415
[error] => Unsupported Media Type
[message] => Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
這是我的Yii2應用程序端代碼:
$url = ['auth/login'];
$data = ['email'=>$email, 'password'=>$password];
$response = \Yii::$app->apiclient->createRequest()
->setMethod('post')
->setUrl($url)
->addHeaders(['Accept-Charset' => 'UTF-8'])
->addHeaders(['Accept' => 'application/json'])
->addHeaders(['Content-Type' => 'application/json'])
->addHeaders(['Accept-Language' => \app\helpers\Helper::getUserLanguage()])
->setData($data)
->send();
return $response;
這是我的apiclient設置在組件部分下的web.conf文件中
'apiclient' => [
'class' => 'yii\httpclient\Client',
'baseUrl' => 'http://myserverName:8000',
],
這是我的Spring(JAVA)API端代碼:
@RequestMapping(value = "/auth/login", method = RequestMethod.POST)
public ResponseEntity<?> authenticateUser(@Valid @RequestBody LoginRequest loginRequest) {}
目標 :如果登錄憑據(電子郵件和密碼)正確,我想從api獲取用戶數據。 甚至會出現驗證錯誤消息
上下文 :我正在使用Yii2框架作為我的應用程序(前端),並使用Spring(JAVA)作為我的后端(API)
旁注 :有趣的事實是,我什至沒有嘗試使用內容類型application/x-www-form-urlencode
正如您在Yii2代碼中看到的那樣,但是我仍然得到問題中提到的響應。
另一個有趣的事實是,當我在郵遞員中調用相同的API時,我沒有收到任何錯誤,並且我的響應完全正確。
任何幫助表示贊賞。
將此添加到您的請求:
-> setFormat(\\ yii \\ httpclient \\ Client :: FORMAT_JSON)
嘗試這個 :
@RequestMapping(value = "/auth/login", method = RequestMethod.POST, consumes = "application/json")
public ResponseEntity<?> authenticateUser(@Valid @RequestBody LoginRequest loginRequest, BindingResult bindingResult) {}
這可能對您有幫助。
謝謝 :)
問題出在我發送給api的請求上。
這是我需要做的
$response = \Yii::$app->apiclient->createRequest()
->setMethod('POST')
->setUrl($url)
->setData($data)
->setFormat(\yii\httpclient\Client::FORMAT_JSON)
->addHeaders(['accept-charset' => 'utf-8'])
->addHeaders(['accept' => 'application/json'])
->addHeaders(['content-type' => 'application/json'])
->addHeaders(['accept-language' => \app\helpers\Helper::getUserLanguage()])
->send();
我添加了以下行,它的工作原理
->setFormat(\yii\httpclient\Client::FORMAT_JSON)
注意事項 :
我不知道它如何工作以及為什么起作用,但這可能是因為PHP是一種松散類型的語言,而JAVA是相反的。 Java會要求發送所有次要細節以處理請求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.