- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过调用网络服务上传设备摄像头拍摄的图像,服务器代码使用 PHP。
首先我将位图转换为字符串
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
String imageInString = Base64.encodeToString(byteArray, Base64.DEFAULT);
然后构造名值对对象
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("email", email));
params.add(new BasicNameValuePair("image", imageInString));
params.add(new BasicNameValuePair("img_desc", img_desc));
params.add(new BasicNameValuePair("amount", amount));
params.add(new BasicNameValuePair("request_type", "INSERT"));
然后,
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
InputStream inputStream = httpEntity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1"), 8);
StringBuilder stringBuilder = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
stringBuilder.append(line + "\n");
}
inputStream.close();
这段代码昨天运行正常,但今天我在 httpPost.setEntity(new UrlEncodedFormEntity(params));
行收到错误 java.lang.OutOfMemoryError
/p>
那么如何消除这个错误呢?
日志猫是
FATAL EXCEPTION: AsyncTask #1
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:266)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1081)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:574)
at java.lang.Thread.run(Thread.java:1020)
Caused by: java.lang.OutOfMemoryError
at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:96)
at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:147)
at java.lang.StringBuilder.append(StringBuilder.java:217)
at org.apache.http.client.utils.URLEncodedUtils.format(URLEncodedUtils.java:165)
at org.apache.http.client.entity.UrlEncodedFormEntity.<init>(UrlEncodedFormEntity.java:71)
at com.network.GetJSONFomURL.getJSONSrtringFromUrl(GetJSONFomURL.java:24)
at com.network.WebServices.uploadImage(WebServices.java:51)
at com.markphoto_activities.UploadActivity$MyAsyncTaskUploadImage.doInBackground(UploadActivity.java:130)
at com.markphoto_activities.UploadActivity$MyAsyncTaskUploadImage.doInBackground(UploadActivity.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:252)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
... 4 more
Activity com.markphoto_activities.UploadActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@407aafc8 that was originally added here
android.view.WindowLeaked: Activity com.markphoto_activities.UploadActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@407aafc8 that was originally added here
at android.view.ViewRoot.<init>(ViewRoot.java:285)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:152)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:95)
最佳答案
试试这个代码而不是名称值对
MultipartEntity reqEntity = new MultipartEntity();
try {
reqEntity.addPart("email", new StringBody(email));
reqEntity.addPart("image", new FileBody(new File(imagePath)));
reqEntity.addPart("img_desc", new StringBody(img_desc));
reqEntity.addPart("amount", new StringBody(amount));
reqEntity.addPart("request_type", new StringBody("INSERT"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
其中 imagePath 是图像文件的路径。然后代替 httpPost.setEntity(new UrlEncodedFormEntity(params));
使用
httpPost.setEntity(reqEntity);
关于android - java.lang.OutOfMemoryError on line httpPost.setEntity(new UrlEncodedFormEntity(params)) 在 android 中以字符串格式发送图像时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14037213/
在我的 android 应用程序中,我试图通过后请求从我的服务器获取(在异步任务中)一个 json 字符串: ... HttpClient httpClient = n
HttpDelete 是否包含 setEntity()、HttpPost 或 HttpPut 之类的方法?当我使用 HttpPost 时,我会做这样的事情: httppost.setEntity(ne
我正在尝试向 node.js 服务器发帖,但出于某种原因,无论我尝试什么,正文对我来说总是空的。我现在正在对 requestb.in 进行测试,它在那里也总是空的。 这是我用于发布的代码: publi
我正在尝试对使用 org.apache 包中的类的早期项目进行改造。 之前我有这样的代码 url.addParameters(url,param); // add query parameters H
我最近转向 Retrofit,我想用 Retrofit 替换这个 httpost 集实体。我该怎么做。 JSONObject jsonObject = new JSONObject();
在 HttpPost 中,这会 append 到 header httppost.setHeader("User-Agent", "AFHttpClient/1.0"); httppo
我正在从 Apache HTTP 旧版客户端迁移到 OkHttp,但在寻找两者之间的等效项时遇到一些问题。几天前,我询问了同一主题的凭据,现在我再次陷入困境: 在旧的实现中我有这个: TimeStam
我用 AndroidStudio 开发 AndroidApps 我开始做一个简单的 HttpPost 请求,我遇到了一个问题,我能找到的所有帖子都是这样做的: private void CheckLo
这个问题在这里已经有了答案: How to set content-length in android? (1 个回答) 关闭 9 年前。 我已经设置了几乎所有的数据: String capcha
我正在使用此代码将其发送到我的 php 文件。该文件看起来像这样。 file_put_contents('dump.txt', "POST: \n" . print_r($_POST, true) .
在 httpPost 中我们设置了 Entity(new StringEntity)。但我现在正在使用截击。我想在 volley 中使用 setEntity 方法。我该怎么做? 我想像这样将它与 Tw
我尝试用这个删除一个参数: private class SendfeedbackDeleteStudio extends AsyncTask { private static final St
我目前正在使用 HttpPost 和 HttpPut 将实体从我的移动应用程序发送到服务器。我正在使用 setEntity 将实体从数据库发送到服务器,它简单、直接并且运行良好,但它现在已从版本 23
我是一名新的 golang 程序员。在 java 中,使用 HTTP.setEntity() 方法很容易设置。但在 golang 中,我有测试服务器的方式来设置它,但我们的服务器仍然缺少接收实体数据。
我正在尝试使用从网站获得的一些代码,该网站通过 API ( http://developer.fantasydata.com ) 公开提供体育数据。 该站点提供了一些示例 JAVA 代码来发出 htt
我正在尝试通过调用网络服务上传设备摄像头拍摄的图像,服务器代码使用 PHP。 首先我将位图转换为字符串 ByteArrayOutputStream stream = new ByteArrayOutp
我是一名优秀的程序员,十分优秀!