读取HttpURLConnection的InputStream-手动缓冲器或BufferedInputStream?
在阅读HttpurlConnection的输入流时,是否有任何理由将以下一个使用在另一个上?我在示例中都看过两者. 手动缓冲区: while ((length = inputStream.read(buffer)) > 0) { os.write(buf, 0, ret); } BufferedInputStream is = http.getInputStream(); bis = new BufferedInputStream(is); ByteArrayBuffer baf = new ByteArrayBuffer(50); int current = 0; while ((current = bis.read()) != -1) { baf.append(current); } 编辑我仍然是HTTP的新手正确的?在这种情况下,我不需要读取消息长度并仅阅读该长度的输入流? 同样,如果不使用持续连接,我包含的代码在正确阅读流方面是
0 2024-04-04
编程技术问答社区
用HttpURLConnection发送二进制数据
我想使用Google语音API,我发现了这个File filetosend = new File(path); byte[] bytearray = Files.readAllBytes(filetosend); URL url = new URL("https://www.google.com/speech-api/v2/recognize?output="+outputtype+"&lang="+lang+"&key="+key); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //method conn.setRequestMethod("POST"); //header conn.setRequestProperty("Content-Type", "audio/x-flac; rate=44100"); 现在我迷路了...我想我需要将bytearray添加到请求中.在示例中,它的行
0 2024-03-30
编程技术问答社区
如何用android的httpURLconnection设置授权头?
我正在尝试使用基本身份验证来连接到服务器,但是当我设置授权标头时,它会导致getInputStream引发fileNotfound异常. 这是相关代码: URL url = new URL(myurl); //set up the connection HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(10000);//this is in milliseconds conn.setConnectTimeout(15000);//this is in milliseconds String authHeader = getAuthHeader(userID,pass); conn.setRequestMethod("GET");
在Android Jelly Bean 4.1上使用HttpURLConnection的HTTP基本认证问题
我们使用HTTP Basic Authentication向Web服务器提出了基于HTTPURLConnection的请求. 代码在Android版本2.x,3.x.,4.0.x现在使用Jelly Bean和v4.1.x身份验证失败,而LogCat中的以下消息失败: 01-27 10:54:18.886: ...::doReadRawData(731): An exception occured while reading data from remote host. httpURLConn.responseCode = 401 / httpURLConn.responseMessage = UNAUTHORIZED 01-27 10:54:18.886: ...::doReadRawData(731): java.io.IOException: No authentication challenges found 我们使用的httpurlconnection的身份验证代码如A
使用HttpUrlConnection Android向服务器发送base64编码的图像
我正在尝试使用httpurlconnection将基本64编码的图像发送到服务器.我遇到的问题是大多数图像都成功发送,但是有些图像产生了fileNotfound异常.我的编码图像的代码可以在下面找到. public static String encodeImage(Bitmap thumbnail) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); thumbnail.compress(Bitmap.CompressFormat.JPEG, 100, baos); byte[] b = baos.toByteArray(); String imageEncoded = Base64.encodeToString(b,Base64.URL_SAFE); return imageEncoded;
2 2024-03-27
编程技术问答社区
HttpURLConnection.getResponseCode()冻结执行/不超时
我正在编写一个连接到密码保护的CPANEL服务器(Apache 2.2.22)页面的Android应用程序.当身份验证凭据正确时,我没有问题连接.但是,当凭据不正确时,我的Android应用似乎在HttpURLConnection.getResponseCode()方法中冻结.服务器上的日志显示了从我的Android设备发送数百个请求,所有请求都按预期返回401,但由于某种原因,这并没有反映在我的应用程序中. 这是我的代码,是从异步词内执行的: @Override protected Integer doInBackground(String... bookInfoString) { // Stop if cancelled if(isCancelled()){ return null; } Log.i(getClass().getName(), "SendToDataba
2 2024-03-20
编程技术问答社区
getRequestProperty("Authorization")总是返回null
我正在尝试阅读HTTP请求的授权标题(因为我需要向其添加一些内容),但是我总是为标头值而定.其他标头正常工作. public void testAuth() throws MalformedURLException, IOException{ URLConnection request = new URL("http://google.com").openConnection(); request.setRequestProperty("Authorization", "MyHeader"); request.setRequestProperty("Stackoverflow", "anotherHeader"); // works fine assertEquals("anotherHeader", request.getRequestProperty("Stackoverflow")); // Auth header return
0 2024-03-20
编程技术问答社区
如何在httprequest中添加参数,以便与twitter api 1.1一起工作
我正在研究一个项目(使用Twitter API搜索特定的主题标签) 进入此站点时/1.1/search/tweets.json?q=liverpool&count=20 获得响应 {"errors":[{"code":215,"message":"Bad Authentication data."}]} 之后,我知道我应该注册我的应用程序,以获取消费者密钥,消费者的秘密,访问令牌,访问令牌秘密,但我不知道如何将此令牌添加到我的Android代码中以进行 这是我的makehttpConnection方法,我想将此令牌添加到连接 private static String makeHttpRequest(URL url) throws IOException { String jsonResponse = ""; // If the URL is null, then return early. if (url == null) {
0 2024-03-20
编程技术问答社区
用post方法安卓登录认证,并获得其他API集合
我在Android开发中非常新.在我的应用程序中,我有一个登录页面,我想通过Post方法实现身份验证功能.我有一个根地址,我必须登录.我提供了样本URL,因为它是机密的. " test.sample.com".我的原子地址是https.然后,我首先需要组合"/登录".在使用此登录的身份验证之后.我有更多的API,例如"/API/用户"," API/Image".我只能使用登录功能进行身份验证时访问此API.我怎样才能做到这一点.到目前为止,我已经创建了一个登录页面,但是目前我还没有在此处实施任何帖子方法. public class LoginPage extends AppCompatActivity{ private UserLoginTask mAuthTask = null; private static final String TAG = "LoginActivity"; private AutoCompleteTextView userEmail;
0 2024-03-20
编程技术问答社区
发生401时获取响应头
嗨,我正在研究Android和Java.因此,我的问题是,每当401发生时,我都无法获得响应标题,也无法获得状态代码.我正在使用HTTP URL连接. 我的代码看起来像这样: String https_url = "http://abc.com"; HttpsURLConnection con = null; int status; URL url; try { url = new URL(https_url); con = (HttpsURLConnection)url.openConnection(); con.setDoInput(true); int responseCode = con.getResponseCode(); //throw IOException:Received authentication challenge is null
0 2024-03-20
编程技术问答社区
追踪登录会话的安卓应用策略
我有一些PHP脚本,如果登录成功,可以登录并返回带有会话ID的JSON数组. 在我的应用程序中,我想在首页上登录并继续通过登录的应用程序.我创建了一个单身人士类,该类别保存了会话ID(以及其他一些字段)页.此Singleton对象的字段" Session_ID"会根据用户的工作进行检查. 如果用户想注销,则session_id只是设置为null,从而登录. 我还使用httpurlconnection库在登录时发布用户名/密码. 这是处理这种情况的足够不错的方法吗? 解决方案 这是您应该考虑的一些事情: 一旦您对用户进行身份验证并在本地存储了session_id,请将session_id发送到每个HTTP请求的标题中.这样,您就不会在每个请求中发送凭据,而是会话ID.如果会话服务器端发生某些事情,则不允许进行交易. 登录时,不要仅仅删除应用程序(客户端)端上的session_id.也将注销方式发送到服务器,以便可以杀死服务器端. 如果会话在服务器端
0 2024-03-20
编程技术问答社区
HttpURLConnection在Android 2.x中工作正常,但在4.1中不正常。没有发现认证挑战
我有一些典型的代码,这些代码使用httpurlconnection获取带有URL的文件. 他们在Android 1.x和2.x中工作良好.但在Android 4.1! 中失败 我在网上搜索,但几乎没有类似的信息. 有人请帮助调查这个问题吗? private String mURLStr; private HttpURLConnection mHttpConnection; ... url = new URL(mURLStr); ... mHttpConnection = (HttpURLConnection) url.openConnection(); mHttpConnection.setDoOutput(true); mHttpConnection.setRequestMethod("GET"); ... InputStream is = mHttpConnection.getInputStream(); getInputStream方法引发了异常:
0 2024-03-19
编程技术问答社区
如何使用HttpURLConnection来处理HTTP认证?
我正在编写一个java客户端,该客户端发布到需要身份验证的HTTP服务器. 我必须至少支持以下三种身份验证方法:基本,消化或谈判.此外,该帖子可能很大(超过2MB),因此我需要使用流媒体. 如 启用输出流时,无法自动处理身份验证和重定向.如果需要身份验证或重定向,则在阅读响应时会抛出httpretryException. . 所以,我需要自己处理身份验证.我搜索并再次搜索了一种使用已经编码的课程的方法 - 但找不到... 我只能从在这里(因为它们是gplv2具有classPath异常).这是正确的方式吗? 谢谢. 解决方案 您需要输出流吗? HttpURLConnection绝对支持使用Authenticator类的身份验证,请参见: http身份验证. 更新:,如果Authenticator不是一个选项,则可以通过在HTTP请求中添加额外的标头来手动执行HTTP基本身份验证.尝试以下代码(未经测试): String userPassword
6 2024-03-19
编程技术问答社区
java.io.IOException : 没有发现认证挑战
我是Android的新手,这是我在Android上的第一个项目.我正在为"身份验证"问题挣扎超过一天.我尝试了几种选择,但它们都没有起作用. 基本上,我想致电REST API并获得响应.我确定API中没有问题,因为我在另一个iOS应用程序中使用了相同的. i通过授权标题,但仍有身份验证未显示任何消息.我发现与此相关的stackoverflow上很少有问题,但是其中一些没有起作用,有些对我来说没有任何意义. 我得到状态代码401.我知道这意味着没有通过身份验证或通过,那么他们是错误的.在这里,我确定我的经过的人是正确的. 以下是我的代码: try { url = new URL(baseUrl); } catch (MalformedURLException me) { Log.e(TAG, "URL could not be parsed. URL : " + baseUrl + ". Line : " + getLineNumber(),
0 2024-03-19
编程技术问答社区
验证CXF HttpAsyncClient对use.async.http.conductit上下文属性的使用情况
我试图通过设置" use.async.http.conduit"属性来利用cxf异步http客户端传输,如我使用以下代码做到这一点: Client client = ClientProxy.getClient(wsClient); client.getRequestContext().put("use.async.http.conduit", Boolean.TRUE); 碰巧的是,我的Web服务呼叫正在计时(可能是由于某些环境网络问题),而我的客户端例外包含(提取): java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.read(SocketInputStream.java:129) at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) at java.io.Buff
2 2024-03-18
编程技术问答社区
HttpUrlConnection在api级别<11的情况下工作,在api级别>11的安卓系统上不工作
首先,我有两件事需要您的注意: 1)我在API级别低于11的手机上尝试了此代码,并且手机(例如4.3或4.4).高API级别的手机无法使该代码起作用,与其他代码不同. 2)我在另一个页面中几乎具有确切的代码,它在所有API上都可以使用,只有我要显示您不起作用的代码. 谢谢您的收听. 这是我的方法,它是建立连接的方法: public static StringBuilder httpGetConnection (String urlStr, Context dialogCtx) { final String noServ = "Server Error"; final String noServErr = "Server is unavailable"; StringBuilder err= new StringBuilder(); err.append("Error!"); HttpURLConnection conn
2 2024-03-07
编程技术问答社区
在post方法中用https url上传文件-java.io.IOException。写入服务器时出错-Java
我必须使用多部分上传到服务器上的二进制图像文件,我打开与HTTPS URL的连接,并将其直接写入输出流.我已经尝试了SSLSLOCKETCOCT,Apache HTTP客户端,但是从所有方面,我都会收到错误消息,Java.io.ioexception:将错误写入服务器.我必须使用多部分二进制文件编写帖子参数.代码在下面给出,我在哪里无法在下面的此代码中看到错误?而且,我给出了示例数据将数据写入连接.如果有人能给我不知道的Apache HTTP客户端,我会很高兴. 示例数据包数据 header part -------------- --aabbaabbaabbxx Content-Disposition: form-data; name="to" --aabbaabbaabbxx Content-Disposition: form-data; name="from" --aabbaabbaabbxx Content-Disposi
2 2024-02-28
编程技术问答社区
如何从HttpClient切换到HttpUrlConnection?
我正在创建一个Android应用程序,并且通过HTTPCLEINT将数据从Android应用程序发送到Servlet.我使用httppost方法. 我在Android开发人员网站上阅读了Apache HTTPClient库在Android Froyo 2.2中有一些错误,毕竟是使用HttpurlConnection而不是HTTPPPOST.因此,我想将我的httppost代码转换为httpurlconnectio,但不知道如何. 我在此处发布我的Android代码以及Servlet代码 Android代码 private String postData(String valueIWantToSend[]) { // Create a new HttpClient and Post Header HttpClient httpclient = new DefaultHttpClient(); HttpPost
6 2024-02-28
编程技术问答社区
HttpEntity现在在Android上被废弃了,有什么替代方案?
随着Android 5.1的释放,看起来所有Apache HTTP的东西都已弃用.查看文档是没有用的;他们都说 This class was deprecated in API level 22. Please use openConnection() instead. Please visit this webpage for further details. 您第一次阅读它是可以的,但是当每个拒绝的班级都说那不是很有帮助的. 无论如何,HttpEntity,特别是StringEntity和MultipartEntity?等类的替代方法是什么,我替换了BasicNameValuePair我自己实施了Android的Pair class和看起来URLEncoder.encode是URLEncodedUtils的一个很好的替代品,但我不确定该怎么做HttpEntity. 编辑 我决定只是重新编写网络内容.将尝试使用改造和OKHTTP 编辑
56 2024-02-28
编程技术问答社区