我正在尝试使用自己的服务器编写移动应用程序。服务器,我写的是使用Laravel框架的PHP,并由本地机器上的xampp托管。我设法通过手机连接 - 浏览器打开我的本地网站。但是我想写一个移动应用程序并通过HttpUrlConnection进入服务器。
使用我的浏览器一切正常。但我的POST请求给了我500代码。我想问题是请求属性,但我不知道写什么。
我的android - 帖子 - 请求代码:
JSONObject jsonObject = null;
URL url = null;
try {
jsonObject = new JSONObject();
jsonObject.put("name", bundle.getString("name"));
jsonObject.put("password", bundle.getString("password"));
jsonObject.put("email", bundle.getString("email"));
url = new URL("http://192.168.1.101:8081/UserAdd");
}
catch(Exception ex){
ex.printStackTrace();
}
try {
byte[] bytes = jsonObject.toString().getBytes("UTF-8");
urlConnection = (HttpURLConnection)
url.openConnection();
urlConnection.setRequestMethod("POST");
// urlConnection.setRequestProperty("Cookie", cookies);
urlConnection.setRequestProperty("Content-Type", "application/json");
urlConnection.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
urlConnection.setRequestProperty("Host", "localhost:8081");
urlConnection.setRequestProperty("Content-Length", String.valueOf(bytes.length));
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
if (flag) {
urlConnection.setInstanceFollowRedirects(false);
}
OutputStream os = urlConnection.getOutputStream();
/*BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(jsonObject.toString());
writer.flush();
writer.close();*/
os.write(jsonObject.toString().getBytes());
os.flush();
os.close();
urlConnection.connect();
boolean redirect = false;
int status = urlConnection.getResponseCode();
if (status != HttpURLConnection.HTTP_OK) {
if (status == HttpURLConnection.HTTP_MOVED_TEMP
|| status == HttpURLConnection.HTTP_MOVED_PERM
|| status == HttpURLConnection.HTTP_SEE_OTHER)
redirect = true;
}
if (redirect) {
String newUrl = urlConnection.getHeaderField("Location");
String cookies = urlConnection.getHeaderField("Set-Cookie");
}
InputStream inputStream = urlConnection.getInputStream();
StringBuffer buffer = new StringBuffer();
reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
String line = null;
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
resultJson = buffer.toString();
} catch (Exception ex) {
ex.printStackTrace();
}
我的计算机浏览器的网络请求标头。我想我需要这个cookie字段,但我不知道在哪里找到它,因为那个laravel - 问题。我很新。伙计们,我在请你帮忙。
答案 0 :(得分:1)
我不确定,因为我对你的后端脚本没有任何想法,但确实做了以下事情。
您在路线中使用 POST 。我怀疑您使用 GET ,因为您可以使用浏览器加载页面。例如,
Route::post('UserAdd', 'Controller@UserAdd');
再次确认您在控制器/ PHP文件中没有任何错误。
如果您使用的是任何authController,请检查您是否拥有有效权限。
检查.htaccess文件。