Java 403尝试从Android建立连接时出现响应错误
当我尝试在Android上发布HTTP帖子时,会出现以下异常: java.io.FileNotFoundException 然而,在桌面上通过浏览器浏览时,同样的功能也可以正常工作 执行此行时显示异常:Java 403尝试从Android建立连接时出现响应错误,java,android,Java,Android,当我尝试在Android上发布HTTP帖子时,会出现以下异常: java.io.FileNotFoundException 然而,在桌面上通过浏览器浏览时,同样的功能也可以正常工作 执行此行时显示异常: InputStream inputStream = httpURLConnection.getInputStream(); 这是我的日志: 我已尝试使用以下代码: @Override protected String doInBackground(String... args
InputStream inputStream = httpURLConnection.getInputStream();
这是我的日志:
我已尝试使用以下代码:
@Override
protected String doInBackground(String... args) {
try {
// setting the URL
URL url = new URL(baseUrl+args[1]);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.addRequestProperty("User-Agent", "RealTimeApps/1.0");
// setting the method type
httpURLConnection.setRequestMethod(args[0]);
httpURLConnection.setChunkedStreamingMode(0);
httpURLConnection.setDoInput(true);
httpURLConnection.setDoOutput(true);
OutputStream outputStream = httpURLConnection.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
Log.v("Url",args[2]);
// setting the identification key name with query params
bufferedWriter.write(args[2]);
bufferedWriter.flush();
bufferedWriter.close();
Log.v("GetPostA", url.toString());
int getPostStatus = httpURLConnection.getResponseCode();
Log.v("GetPostSts", String.valueOf(getPostStatus));
String line = "";
String res = "";
// if(getPostStatus == 200){
// prepare the output buffer
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
while ((line = bufferedReader.readLine()) != null) {
res += line;
}
inputStream.close();
// }
httpURLConnection.disconnect();
switch (args[3]){
case "1":
responseStrLogin = res.toString();
break;
case "2":
responseStrSignUp = res.toString();
break;
case "3":
responseStrFriendList = res.toString();
break;
case "4":
responseStrUpdateLocation = res.toString();
break;
case "5":
responseStrSettings = res.toString();
break;
case "6":
responseStrSearchFriendForRequest = res.toString();
break;
case "7":
responseStrSendFriendRequest = res.toString();
break;
case "8":
responseStrUserFriendRequestList = res.toString();
break;
case "9":
responseStrApproveFriendRequest = res.toString();
break;
case "10":
responseStrProfileDetails = res.toString();
break;
case "11":
responseStrCarDetails = res.toString();
break;
case "12":
responseStrCorporateDetails=res.toString();
break;
case "13":
responseStrPasswordChange=res.toString();
break;
case "14":
responseStrLocationShareToggle=res.toString();
break;
case "15":
responseStrToggleStatus=res.toString();
break;
case "16":
responseStrForgetPassword=res.toString();
break;
case "17":
responseStrSearchResult=res.toString();
break;
case "18":
responseStrDeleteFriend=res.toString();
break;
case "19":
responseStrSearchResultFriendList=res.toString();
break;
case "20":
responseStrShowFriendList=res.toString();
break;
case "21":
responseStrShowFriendProfileDetails=res.toString();
break;
case "22":
responseStrTimeSetForIndividuals=res.toString();
break;
case "23":
responseStrFriendListPeriod=res.toString();
break;
case "24":
responseStrFriendsRouteLatLng=res.toString();
break;
default:
responseStr = res.toString();
break;
}
Log.v("ResD", res.toString());
return res.toString();
} catch (MalformedURLException e) {
e.printStackTrace();
Log.v("GetPostCatchMal",e.toString());
} catch (IOException e) {
e.printStackTrace();
Log.v("GetPostCatchIOE", e.toString());
}
return null;
}
您没有连接url连接 加 就在
int getPostStatus = httpURLConnection.getResponseCode();
仅当url连接响应正常时才执行其余操作,如
if (httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
//do your stuff
}
你也可以在这里查看我的答案:
更新
如果添加了
httpURLConnection.connect()。我尝试了你的URL,但发现该文件不可用。请提供一个特定的文件地址(如systechdigital.com/projects/friendLocation/login/checkLogin/index.php)作为url,然后重试。多次尝试后,问题就解决了。我在下面提到的行中得到了403的响应:
httpURLConnection.setChunkedStreamingMode(0);我强制设置了块长度0,这就是问题所在。谢谢大家的合作。
有关更多信息,请访问以下链接:
服务器在哪里?它在你的本地桌面上吗?HTTP代码403是禁止的。不,它是公共服务器:操作url:我使用Fiddler从我的桌面发了一篇帖子,也返回了200。您是否授予在de android设备上访问internet的权限?是的,我授予了,下面是我在我的应用程序中使用的权限列表:您能否解释为什么添加此“httpURLConnection.addRequestProperty(“用户代理”,“RealTimeApps/1.0”)请给我你的新日志03-20 10:54:01.541 9066-9602/com.tracker.systechdigital.realtimetracking和monitoring V/GetPostSts:403 03-20 10:54:01.551 9066-9602/com.tracker.systechdigital.realtimetracking和monitoring V/getpostchioe:java.io.filenotfound异常:我检查了你的服务器。它在php中也不可用。所以试着给出一个特定的php文件地址作为url。您是否在checkLogin文件夹中提供了index.php文件?亲爱的#测试这是一个MVC应用程序,这就是(.php)不可用的原因。“login”是控制器,checkLogin是该控制器的方法。
int getPostStatus = httpURLConnection.getResponseCode();
if (httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
//do your stuff
}