Java 如何验证httpURLConnection、发送请求和获取响应
我在验证httpURLConnection时遇到问题。我有一个POST请求的URL,但我需要像用户一样进行身份验证才能从服务器获得响应。我试着用基本的身份验证,但对我来说不起作用。不管怎样,我得到了回应代码:401-未经授权 您知道使用httpURLConnection进行身份验证的其他方法吗?我做错了什么 这是我的代码:Java 如何验证httpURLConnection、发送请求和获取响应,java,android,web-services,authentication,httpurlconnection,Java,Android,Web Services,Authentication,Httpurlconnection,我在验证httpURLConnection时遇到问题。我有一个POST请求的URL,但我需要像用户一样进行身份验证才能从服务器获得响应。我试着用基本的身份验证,但对我来说不起作用。不管怎样,我得到了回应代码:401-未经授权 您知道使用httpURLConnection进行身份验证的其他方法吗?我做错了什么 这是我的代码: Thread networkThread=新线程(){ 推翻 公开募捐{ 试一试{ setDefault(新验证器(){ 推翻 受保护的密码身份验证getPasswordAu
Thread networkThread=新线程(){
推翻
公开募捐{
试一试{
setDefault(新验证器(){
推翻
受保护的密码身份验证getPasswordAuthentication(){
Log.d(标签,“------------------==========>>>>ПАППАЛа”);
返回新密码身份验证(“登录”、“密码”.tocharray());
}
});
URL=新URL(“https://sscale.dk/ro/service2.asmx/stackdata");
字符串urlParameters=“ix=123”;
HttpURLConnection con=(HttpURLConnection)url.openConnection();
String userCredentials=“登录:密码”;
最后一个字符串basicAuth=“Basic”+Base64.encode(userCredentials.getBytes(),Base64.NO_WRAP);
con.setRequestProperty(“授权”,basicAuth);
//发送邮寄请求
con.setRequestMethod(“POST”);
con.setRequestProperty(“内容类型”、“应用程序/x-www-form-urlencoded”);
con.setRequestProperty(“内容长度”,“urlParameters.getBytes().Length”);
con.setRequestProperty(“内容语言”、“美国英语”);
con.setUseCaches(假);
con.setDoInput(真);
con.设置输出(真);
DataOutputStream wr=新的DataOutputStream(con.getOutputStream());
writeBytes(URL参数);
wr.flush();
wr.close();
int responseCode=con.getResponseCode();
System.out.println(“\n向URL发送'POST'请求:“+URL”);
System.out.println(“Post参数:+urlParameters”);
System.out.println(“响应代码:“+responseCode”);
BufferedReader in=新的BufferedReader(
新的InputStreamReader(con.getInputStream());
字符串输入线;
StringBuffer响应=新的StringBuffer();
而((inputLine=in.readLine())!=null){
追加(inputLine);
}in.close();
字符串结果=response.toString();
日志d(标签“------------>Мыыцццццццццццццццц1094;
}捕获(例外e){
e、 printStackTrace();
}
}
};
networkThread.start();
这是我的日志猫:
System.out: Sending 'POST' request to URL : [https://sscale.dk/ro/service2.asmx/stackdata]
System.out: Post parameters : ix=123
System.out: Response Code : 401
System.err: java.io.FileNotFoundException: https://sscale.dk/ro/service2.asmx/stackdata
System.err: at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:206)
System.err: at com.android.okhttp.internal.http.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
System.err: at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:25)
System.err: at net.caustix.redoctoberwoodapp.LoginActivity$1.run(LoginActivity.java:112)
我解决了!答案是我访问了错误的API页面。我找到了正确的页面,用post参数“username”和“password”登录,成功了 你的链接错误!!!。请检查一下!这是我正在尝试访问的Web服务的API页面:我正在尝试访问。它没有显示page.API的“stackdata”方法的API:你养了一条狗,自己在叫。使用
验证器
或授权:基本…
标题。不是两个都在同一时间。你的链接错误!!!。请检查一下!这是我正在尝试访问的Web服务的API页面:我正在尝试访问。它没有显示page.API的“stackdata”方法的API:你养了一条狗,自己在叫。使用验证器
或授权:基本…
标题。不是两个都在同一时间。