我正在使用Eclipse.我有以下代码行:
wr.write(new sun.misc.BASE64Encoder().encode(buf));
Run Code Online (Sandbox Code Playgroud)
Eclipse将此行标记为错误.我导入了所需的库:
import sun.misc.BASE64Encoder;
import sun.misc.BASE64Decoder;
Run Code Online (Sandbox Code Playgroud)
我使用Apache Commons作为建议的解决方案,包括:
import org.apache.commons.*;
Run Code Online (Sandbox Code Playgroud)
并导入从以下网址下载的JAR文件:http://commons.apache.org/codec/
但问题仍然存在.Eclipse仍然显示前面提到的错误; 请指教.
在我的应用程序中,我通过HTTPS对Web服务进行HTTP调用.我的愿望是设计我的客户端,以便在有身份验证挑战时只询问用户的用户名和密码.我想要被动,而不是先发制人.由于我的应用程序的性质,在某些情况下,它不需要进行身份验证.
在iOS中,通过NSURLConnectionDelegateProtocol非常容易地完成此过程,该程序在我的应用程序的iOS版本中实现.使用此类建立连接,并且仅当提出质询时,类才会向其委托询问身份验证凭据.
如何在Android中完成?使用AuthenticationHandler?或者也许是认证者?如果是这样,可以提供示例或教程吗?
编辑1:
使用Authenticator类(请参阅下面的答案)我现在能够响应身份验证挑战,但目前只能使用硬编码凭据.我想提示用户输入用户名和密码.根据Android文档,在该getPasswordAuthentication方法中,您"通常会提示用户输入所需内容".
这怎么可能?在不阻塞UI线程的情况下,我知道不能/不应该这样做,如何在该方法中显示对话框,等待用户输入,然后检索输入的凭据并返回它们?
编辑2:
虽然使用Authenticator类很少或没有示例,但我能够找到的建议是,在单个方法中提示用户输入是不可能的,例如getPasswordAuthentication.可能必须恢复到Apache Http客户端......
最终编辑:
我仍在使用HttpURLConnection,但是按照爱德华在下面提出的建议行事.似乎没有任何可配置的类来处理身份验证挑战并提示用户输入,所以我手动执行此操作.
我想在向服务器发送 POST 请求时设置 HTTP 请求标头“授权”。我如何在 Java 中做到这一点?HttpClient 是否支持它?
http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#z9
服务器要求我为授权字段设置一些特定的值:表单 ID:signature 然后他们将使用它来验证请求。
谢谢阿杰