从 Android 向 Laravel 发送 JSON
Posted
技术标签:
【中文标题】从 Android 向 Laravel 发送 JSON【英文标题】:Send JSON from Android to Laravel 【发布时间】:2018-06-30 05:01:29 【问题描述】:我正在尝试将 JSON 对象从 android 发送到 Laravel,但我得到了响应代码 405
请检查下面的代码。
发出请求的活动:
public class ConActivity extends AppCompatActivity
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new ConnectionTask().execute("http://192.168.100.25:8000/check");
public class ConnectionTask extends AsyncTask<String, String, String>
@Override
protected String doInBackground(String... strings)
JSONObject deviceInfo = getDeviceInfo();
HttpURLConnection connection = null;
BufferedReader reader = null;
try
URL url = new URL(strings[0]);
connection = (HttpURLConnection) url.openConnection();
connection.setReadTimeout(15000);
connection.setConnectTimeout(15000);
connection.setRequestMethod("GET");
connection.setDoInput(true);
connection.setDoOutput(true);
int responseCode=connection.getResponseCode();
if (responseCode == HttpsURLConnection.HTTP_OK)
BufferedReader in=new BufferedReader(new
InputStreamReader(
connection.getInputStream()));
StringBuffer sb = new StringBuffer("");
String line="";
while((line = in.readLine()) != null)
sb.append(line);
in.close();
return sb.toString();
else
return new String("false : " + responseCode);
catch (MalformedURLException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
catch (Exception e)
e.printStackTrace();
finally
if(connection != null)
connection.disconnect();
if(reader != null)
try
reader.close();
catch (IOException e)
e.printStackTrace();
return null;
@Override
protected void onPostExecute(String s)
super.onPostExecute(s);
tvOut.setText(s);
private JSONObject getDeviceInfo()
JSONObject json = new JSONObject();
try
json.put("first_name", "John");
json.put("last_name", "Doe");
catch (JSONException e)
e.printStackTrace();
return json;
private String getPostDataString(JSONObject params) throws Exception
StringBuilder result = new StringBuilder();
boolean first = true;
Iterator<String> itr = params.keys();
while(itr.hasNext())
String key= itr.next();
Object value = params.get(key);
if (first)
first = false;
else
result.append("&");
result.append(URLEncoder.encode(key, "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(value.toString(), "UTF-8"));
return result.toString();
这是web.php
中的路线:
Route::get('/check', [
'uses' => 'DashboardController@check',
'as' => 'check'
]);
以及 DashboardController 的代码
class DashboardController extends Controller
public function check()
die(request());
请告诉我我在这里做错了什么。我的问题是在 Android 和 Laravel 之间交换 JSON 数组/对象。请指导我正确的方向。
【问题讨论】:
【参考方案1】:405 表示您在请求中使用了错误的 http 动词。您的路线是一个 GET 请求,您可能是从 android 发布到它。
如果您在此路线之前定义了其他路线,那么您可能没有到达您认为由于路线匹配而导致的路线。
【讨论】:
路由和请求都使用了“GET”动词,但通过将两者都替换为“POST”解决了问题以上是关于从 Android 向 Laravel 发送 JSON的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Websocket 向特定的 Android 设备发送消息
在 Vue.js 中使用 axios 向 Laravel API 发送获取请求
使用 laravel-push-notification 向 Android 发送推送通知