Я пытаюсь создать настольное приложение с помощью С#, которое будет манипулировать базой данных моего веб-сайта Laravel (MySQL). Поэтому я создаю маршруты API, чтобы действовать как посредник. На самом деле я решил свою проблему, изменив код, но не понял, почему он не работал раньше. Я новичок как в Laravel, так и в С#, и кое-что кодирую, чтобы узнать кое-что.
This is my c# code to send a post request
WebClient client = new WebClient();
string postUrl = "http://mywebsite.com/api/v1/handshake";
var reqparm = new System.Collections.Specialized.NameValueCollection();
reqparm.Add("param1", "<any> kinds & of = ? strings");
reqparm.Add("param2", "testing parameter two");
byte[] response= client.UploadValues(postUrl, reqparm);
string result = System.Text.Encoding.UTF8.GetString(response);
MessageBox.Show(result);
Это мой маршрут в Laravel (вне промежуточного программного обеспечения)
Route::prefix('v1')->group(function(){
Route::post('handshake','Api\SomeController@handshake');
});
Проблема, которая меня интересует, заключается в том, что мой контроллер был таким:
public function handshake(Request $request)
{
return json_encode($request);
}
Ответ был: {"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}
Когда я меняю метод рукопожатия на это:
public function handshake(Request $request)
{
return json_encode($request->param2);
}
Ответ был: "testing parameter two"
Поэтому мне интересно, почему ответ был пустым, когда я вернул json_encode($response).
Является ли Illuminate Request другим типом объекта, который вызывает это, или это что-то еще, что я упускаю? Будет очень полезно, если вы объясните причину, по которой это не сработало
json_encode($request)
? Чтобы посмотреть, что у него есть? - person matiaslauriti   schedule 06.04.2021xdebug
, но вы должны настроить его. Это намного лучше, чем что-тоjson_encode
делать, попробуйте! - person matiaslauriti   schedule 07.04.2021