为什么此代码返回“不支持指定的方法”。
using System;
using System.IO;
using System.Security.Cryptography;
using System.Web.Mvc;
public class ETagAttribute : ActionFilterAttribute
{
private string GetToken(Stream stream) {
MD5 md5 = MD5.Create();
byte [] checksum = md5.ComputeHash(stream);
return Convert.ToBase64String(checksum, 0, checksum.Length);
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
filterContext.HttpContext.Response.AppendHeader("ETag", GetToken(filterContext.HttpContext.Response.OutputStream));
base.OnResultExecuted(filterContext);
}
}
Run Code Online (Sandbox Code Playgroud)
这应该有效,但不是。
显然微软覆盖了 System.Web.HttpResponseStream.Read(Byte[] buffer, Int32 offset, Int32 count) 以便它返回“不支持指定的方法。”,不知道为什么他们会这样做,因为它继承了系统。 IO.Stream 基类...
堆栈跟踪:
[NotSupportedException: Specified method is not supported.]
System.Web.HttpResponseStream.Read(Byte[] buffer, Int32 offset, Int32 count) +29
ETagAttribute.ReadFully(Stream input) in Filters\ETagAttribute.cs:11
ETagAttribute.GetToken(Stream stream) in Filters\ETagAttribute.cs:22
ETagAttribute.OnResultExecuted(ResultExecutedContext …Run Code Online (Sandbox Code Playgroud) 在下面的代码中,outPutStream的close函数抛出了我应该捕获的IOException异常.我的问题是我需要处理吗?由于我正在使用移动设备,我想确保释放我使用的所有资源,或者我可以安全地忽略该异常.
//...
OutputStream output = null;
try {
output = connection.getOutputStream();
output.write(query.getBytes(charset));
} finally {
if (output != null) try {
output.close();
} catch (IOException e) {
// Do i need to do something here ?
}
}
Run Code Online (Sandbox Code Playgroud) 我的目标是发送一个带有空数据字段的 TCP 数据包,以便用远程机器测试套接字。
我正在使用 OutputStream 类的 write(byte[] b) 方法。我的尝试:
outClient = ClientSocket.getOutputStream();
outClient.write(("").getBytes());
Run Code Online (Sandbox Code Playgroud)
这样做,数据包永远不会出现在线路上。如果 "" 被 " " 或任何非零字符串替换,它工作正常。
我尝试了 jpcap,它对我有用,但没有达到我的目标。我想扩展 OutputStream 类,并实现我自己的 OutputStream.write 方法。但这超出了我的知识范围。如果有人已经做过这样的事情,请给我建议。
我需要将一些数据作为文本文件存储在内部存储器上.例如下面,我有一个按钮,我想在每次单击按钮时将一些数据保存在文本文件中.我正在测试一个例子:
http://developer.android.com/training/basics/data-storage/files.html
import java.io.FileOutputStream;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity implements OnClickListener {
Button b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button) findViewById(R.id.button1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v) {
String filename = "myfile";
String string = …Run Code Online (Sandbox Code Playgroud) 我为URLConnections的基本GET和POST请求实现了一个WebRequest类.
其中一个功能是提交文件 - 现在我想计算并显示上传文件的进度 - 但我不知道如何做到这一点:
for (KeyFilePair p : files) {
if (p.file != null && p.file.exists()) {
output.writeBytes("--" + boundary + "\n");
output.writeBytes("Content-Disposition: form-data; name=\""
+ p.key + "\"; filename=\"" + p.file.getName() + "\"\n");
output.writeBytes("Content-Type: " + p.mimetype
+ "; charset=UTF-8\n");
output.writeBytes("\n");
InputStream is = null;
try {
long max = p.file.length();
long cur = 0;
is = new FileInputStream(p.file);
int read = 0;
byte buff[] = new byte[1024];
while ((read = is.read(buff, 0, buff.length)) > 0) { …Run Code Online (Sandbox Code Playgroud) 如果用户按下开始按钮,我有一个短代码可以将录制的音频实时传输到扬声器。在他按下停止按钮后,缓冲的音频应该保存在一个 mp3 文件中。该文件已创建,但它是空的。如果我尝试播放文件,我听不到任何声音。
public class MainActivity extends Activity {
boolean m_stop = true;
AudioTrack m_audioTrack;
Thread m_noiseThread;
static final int bufferSize = 200000;
AudioRecord arec;
FileOutputStream os = null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onStartStopClicked(View v)
{
Button StartButton = (Button)findViewById(R.id.StartStop);
if(m_stop) {
start();
} else {
stop();
}
}
Runnable m_noiseGenerator = new Runnable()
{
public void run()
{
String filepath = Environment.getExternalStorageDirectory().toString();
os = new FileOutputStream(filepath + "/test.mp3");
int buffersize1 = AudioRecord.getMinBufferSize(11025, …Run Code Online (Sandbox Code Playgroud) Java 8在这里.如何将数据读Process#getOutputStream()入String?我试图从Java内部运行一个进程并挂钩/捕获它的STDOUT.
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("consul -v");
String capturedOutput;
OutputStream os = proc.getOutputStream();
capturedOutput = howDoIConvert(os); // <---- ???
Run Code Online (Sandbox Code Playgroud)
在这里寻找确切的代码(不是模糊的东西baos.toString(codepage).也感兴趣,如果我需要close()礼貌的任何东西.
我有一个OutputStream返回的实例HttpURLConnection.我需要在流中写一个UTF-8字符串.
我有两种方式:
使用OutputStream自己
// write String
os.write("some utf8 text".getBytes(Charsets.UTF_8));
Run Code Online (Sandbox Code Playgroud)使用OutputStreamWriter包装器
// BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os, CharsetUtils.UTF_8));
OutputStreamWriter osw = new OutputStreamWriter(os, CharsetUtils.UTF_8);
osw.write("some utf8 text");
Run Code Online (Sandbox Code Playgroud)问:为什么要使用OutputStreamWriter在OutputStream写字符串?
谢谢!
我正在使用OAuth2RestTemplate类spring-security-oauth2-2.1.1.RELEASE休息客户服务。理想情况下,每当访问令牌过期时,模板应通过获取新的访问令牌来重试失败的请求。但有时,当访问令牌在发布请求上过期时,模板会退出并出现以下错误:
org.springframework.web.client.ResourceAccessException:“REQUEST-URL”的 POST 请求上的 I/O 错误:由于服务器身份验证,在流模式下无法重试;嵌套异常是 java.net.HttpRetryException: 由于服务器身份验证无法重试,在流模式下
搜索后,我知道这种行为是由于outputStreaming变量 of造成的SimpleClientHttpRequestFactory,默认情况下设置为 true。我试图将此变量设置为 false 并且一切正常。但是我不知道如果将outputStreaming变量设置为 false会发生什么。所以我试图理解它的目的,它帮助我决定是否应该继续禁用outputStreaming.
提前致谢!
关闭一个当什么是最可靠的模式可供遵循OutputStream,ServerSocket或其他对象实现的AutoCloseable接口?
我应该使用try- catch-finally吗?或者关闭钩子。
outputstream ×10
java ×7
android ×2
io ×2
text ×2
asp.net-mvc ×1
audiorecord ×1
audiotrack ×1
file ×1
md5 ×1
resources ×1
serversocket ×1
sockets ×1
spring ×1
spring-web ×1
status ×1
stdout ×1
store ×1
tcp ×1
upload ×1
utf-8 ×1