上传的Java方法
public Boolean EnviarArquivo(File arquivo) throws IOException
{
Boolean ret = false;
Log.d(TAG, "Eviando arquivo via http");
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(URLs.UPLOAD_ARQUIVO);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
InputStream is = null;
byte[] buffer = null;
is = new FileInputStream(arquivo);
buffer = new byte[is.available()];
is.read(buffer);
is.close();
// Transformando array de bytes em String para enviar ao
// servidor
String imagemBase64 = Base64.encodeToString(buffer, Base64.DEFAULT);
MultipartEntity entity = new MultipartEntity();
entity.addPart("image", new StringBody(imagemBase64));
httppost.setEntity(entity);
try
{
String responseString = httpclient.execute(httppost, responseHandler);
Log.d(TAG, "Arquivo enviado via http");
ret = true;
}
catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ret;
}
C#WCF接口
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "uploadImagem", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
Bitmap uploadImagem(Stream imagem);
C#WCF服务
public Bitmap uploadImagem(Stream imagem)
{
LogWriter.WriteLog("Imagem recebida");
try
{
byte[] buffer = new byte[16 * 1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = imagem.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
buffer = ms.ToArray();
}
using (MemoryStream mStream = new MemoryStream())
{
mStream.Write(buffer, 0, buffer.Length);
Bitmap bm = new Bitmap(mStream);
return bm;
}
}
catch (Exception)
{
return null;
}
}
Eclipse LogCat 10-15 14:24:45.138:D/UploadPhotos(14370):Eviando arquivo通过http 10-15 14:24:45.198:W/System。err(14370):android。操作系统。NetworkOnMainThreadException 10-15 14:24:45.208:W/System。err(14370):在android上。操作系统。StrictMode$AndroidBlockGuardPolicy。网络(StrictMode.java:1117)10-15 14:24:45.208:W/System。err(14370):在java。网InetAddress。lookupHostByName(InetAddress.java:385)10-15 14:24:45.208:W/System。err(14370):在java。网InetAddress。getAllByNameImpl(InetAddress.java:236)10-15 14:24:45.208:W/System。err(14370):在java。网InetAddress。getAllByName(InetAddress.java:214)10-15 14:24:45.208:W/System。err(14370):在组织。阿帕奇。http。impl。conn.DefaultClientConnectionOperator。openConnection(DefaultClientConnectionOperator.java:137)10-15 14:24:45.208:W/System。err(14370):在组织。阿帕奇。http。impl。conn.AbstractPoolEntry。打开(AbstractPoolEntry.java:164)10-15 14:24:45.208:W/System。err(14370):在组织。阿帕奇。http。impl。conn.AbstractPooledConnAdapter。开放(AbstractPooledConnAdapter.java:119)10-15 14:24:45.208:W/System。err(14370):在组织。阿帕奇。http。impl。客户DefaultRequestDirector。执行(DefaultRequestDirector.java:360)10-15 14:24:45.208:W/System。err(14370):在组织。阿帕奇。http。impl。客户AbstractHttpClient。执行(AbstractHttpClient.java:555)10-15 14:24:45.208:W/System。err(14370):在组织。阿帕奇。http。impl。客户AbstractHttpClient。执行(AbstractHttpClient.java:653)10-15 14:24:45.218:W/System。err(14370):在组织。阿帕奇。http。impl。客户AbstractHttpClient。执行(AbstractHttpClient.java:627)10-15 14:24:45.218:W/System。err(14370):在组织。阿帕奇。http。impl。客户AbstractHttpClient。执行(AbstractHttpClient.java:616)10-15 14:24:45.218:W/System。err(14370):在com。序言。papirosmart。应用程序。上传照片。EnviarArquivo(UploadPhotos.java:251)10-15 14:24:45.218:W/System。err(14370):在com。序言。papirosmart。应用程序。上传照片。SendFile(UploadPhotos.java:158)10-15 14:24:45.218:W/System。err(14370):在com。序言。papirosmart。应用程序。上传照片。SendFolders(UploadPhotos.java:121)10-15 14:24:45.218:W/System。err(14370):在com。序言。papirosmart。应用程序。上传照片。ExecutarRotina(UploadPhotos.java:81)10-15 14:24:45.218:W/System。err(14370):在com。序言。papirosmart。客户。主要活动。InicializeUploadFiles(MainActivity.java:128)10-15 14:24:45.218:W/System。err(14370):在com。序言。papirosmart。客户。主要活动。onResume(MainActivity.java:479)10-15 14:24:45.228:W/System。err(14370):在android上。应用程序。仪表。callActivityOnResume(Instrumentation.java:1187)10-15 14:24:45.228:W/System。err(14370):在android上。应用程序。活动performResume(Activity.java:5326)10-15 14:24:45.228:W/System。err(14370):在android上。应用程序。活动线程。performResumeActivity(ActivityThread.java:2599)10-15 14:24:45.228:W/System。err(14370):在android上。应用程序。活动线程。handleResumeActivity(ActivityThread.java:2647)10-15 14:24:45.228:W/System。err(14370):在android上。应用程序。活动线程。handleLaunchActivity(ActivityThread.java:2104)10-15 14:24:45.228:W/System。err(14370):在android上。应用程序。活动线程。访问$600(ActivityThread.java:138)10-15 14:24:45.228:W/System。err(14370):在android上。应用程序。ActivityThread$H.handleMessage(ActivityThread.java:1205)10-15 14:24:45.228:W/System。err(14370):在android上。操作系统。处理程序。dispatchMessage(Handler.java:99)10-15 14:24:45.228:W/System。err(14370):在android上。操作系统。活套。循环(Looper.java:137)10-15 14:24:45.228:W/System。err(14370):在android上。应用程序。活动线程。main(ActivityThread.java:4954)10-15 14:24:45.228:W/System。err(14370):在java。郎。反思。方法invokenactive(本机方法)10-15 14:24:45.238:W/System。err(14370):在java。郎。反思。方法调用(方法java:511)10-15 14:24:45.238:W/System。err(14370):在com.Android内部的操作系统。ZygoteInit$MethodandArgscaler。运行(ZygoteInit.java:798)10-15 14:24:45.238:W/System。err(14370):在com.Android内部的操作系统。合子岩。main(ZygoteInit.java:565)10-15 14:24:45.238:W/System。err(14370):在dalvik。系统国家艺术。主(本机方法)10-15 14:24:45.258:D/dalvikvm(14370):GC_并发释放2929K,32%释放7694K/11267K,暂停15ms 11ms,总计91ms
这里的问题是,你正试图在Android应用程序的主(UI)线程上进行联网。这将导致您的异常:
android.os.NetworkOnMainThreadException
解决方案是在AsyncTask中运行网络代码。有关更多信息,请查看此SO问题。
我的MainActivity代码在这里:
我正在尝试使用MSSQL服务器将我的django应用程序发布到azure。我正在使用django azure pyodbc和pyodbc进行连接,当它在本地工作时,每当我使用mssql发布时,我都会收到一个内部服务器错误,尽管发布成功。如果我使用预先打包的sqllite3服务器发布,它就可以工作。我使用的虚拟环境包括Python 3.4、Django 1.8.4、pyodbc 3.0.10和Dja
问题内容: 我正在使用背景音乐创建游戏应用程序。我使用Android Service播放背景音乐是因为我想在更改活动时运行BGM。我的问题是,我在每个活动的onPause方法中都声明了finish()(我不想让用户返回并想杀死该活动)。 因此,当我打算进行其他活动时,它将调用onDestroy并停止该服务。我想停止该服务以完全退出应用程序(按下主页按钮),并想要通过onPause()中的BGM
在 Azure 门户中将包部署到云服务时,我发现了以下问题: 所有实例都在等待角色启动,出现以下异常: 未处理的异常:Microsoft.ApplicationServer.Caching.DataCacheException web角色在Compute Emulator上运行良好。 我最近确实向我的系统添加了共址缓存,但我不知道如何查明问题所在。 当我检查该角色的事件日志时,我发现了以下两个错误
问题内容: 寻找有关基于cf2010中的WCF REST模板40(CS)扩展的wcf 4 rest服务的指南。我花了最后两天的时间来尝试使该Bugger正常工作,并复习其他帖子,尽管我已经接近了,但似乎无法越过终点。经过很多挫败之后,它最终到达了服务并发布(使用fiddler请求构建器),但是method参数作为null出现,但已在请求构建器中正确设置。我猜这可能是配置问题,但是由于截止日期迫在眉
我试图消费WCF服务在PhoneGap应用程序为Android使用jQuery ajax托管在内部网域。 作为回应,我将根据下面的ajax请求得到一条消息。 Ajax请求: 请求报头 响应报头 HTTP/1.1 415无法处理该消息,因为内容类型“application/x-www-form-urlencoded;charset=UTF-8“不是预期的类型”text/xml;字符集=utf-8'。