dongshi1914 2018-01-26 14:04
浏览 79

Laravel获取具有正确编码的请求正文

The function is simple, I need to forward a post request to an external API service. I am using Laravel 5.5 and the $client is Guzzle 6 client;

use Illuminate\Http\Request;
use GuzzleHttp\Client; 

public function insert(Request $request)
{
    try {
        $body =  $request->json()->all();
        $response = $this->client->post($this->generateUrl("/api/sections?", $request->getQueryString()), ['json' =>$body]);
        return response($response->getBody(),$response->getStatusCode())>withHeaders($response->getHeaders());
    }catch(Exception $e){
      .....
    }
}

the problem is the $bodyStringRAW = $request->json()->all();

the data send to laravel is [{"name":"Secion4小明","comment":"","applicationId":"59"}]

the data received by the external API is [{"name":"Secion4\u5c0f\u660e","comment":null,"applicationId":"59"}]

If i change the code to

$response = $this->client->post($this->generateUrl("/api/sections?", $request->getQueryString()), ['json' =>$request->getContent()]);

the external API received the data as [{\"name\":\"Secion4\u5c0f\u660e\",\"comment\":\"\",\"applicationId\":\"59\"}]

How can I make the encoding correct? I Can't find the way to set the encoding.

Update 1:

 $body =  utf8_decode($request->getContent());
 $response = $this->client->post($this->generateUrl("/api/sections?", $request->getQueryString()), ['json' =>$body]);

External API got [{\"name\":\"Secion4??\",\"comment\":\"\",\"applicationId\":\"59\"}]

  • 写回答

1条回答 默认 最新

  • duanmajing9332 2018-01-26 14:08
    关注

    The data is is Unicode, you can convert with utf8_decode.

    评论

报告相同问题?

悬赏问题

  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?