- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 ttorrent 库为 Android 创建 torrent 应用程序。我遇到了一些问题。
05-29 23:07:23.388: E/AndroidRuntime(3681): FATAL EXCEPTION: bt-announce(..393337)
05-29 23:07:23.388: E/AndroidRuntime(3681): java.lang.NullPointerException
05-29 23:07:23.388: E/AndroidRuntime(3681): at com.turn.ttorrent.common.protocol.http.HTTPAnnounceResponseMessage.parse(HTTPAnnounceResponseMessage.java:105)
05-29 23:07:23.388: E/AndroidRuntime(3681): at com.turn.ttorrent.common.protocol.http.HTTPTrackerMessage.parse(HTTPTrackerMessage.java:51)
05-29 23:07:23.388: E/AndroidRuntime(3681): at com.turn.ttorrent.client.announce.HTTPTrackerClient.announce(HTTPTrackerClient.java:124)
05-29 23:07:23.388: E/AndroidRuntime(3681): at com.turn.ttorrent.client.announce.Announce.run(Announce.java:224)
05-29 23:07:23.388: E/AndroidRuntime(3681): at java.lang.Thread.run(Thread.java:856)
public static HTTPAnnounceResponseMessage parse(ByteBuffer data)
throws IOException, MessageValidationException {
BEValue decoded = BDecoder.bdecode(data);
if (decoded == null) {
throw new MessageValidationException(
"Could not decode tracker message (not B-encoded?)!");
}
Map<String, BEValue> params = decoded.getMap();
try {
List<Peer> peers;
try {
// First attempt to decode a compact response, since we asked
// for it.
peers = toPeerList(params.get("peers").getBytes());
} catch (InvalidBEncodingException ibee) {
// Fall back to peer list, non-compact response, in case the
// tracker did not support compact responses.
peers = toPeerList(params.get("peers").getList());
}
return new HTTPAnnounceResponseMessage(data,
params.get("interval").getInt(),
params.get("complete").getInt(),
params.get("incomplete").getInt(),
peers);
} catch (InvalidBEncodingException ibee) {
throw new MessageValidationException("Invalid response " +
"from tracker!", ibee);
} catch (UnknownHostException uhe) {
throw new MessageValidationException("Invalid peer " +
"in tracker response!", uhe);
}
参数中没有“interval”或“complete”或“inclomplete”等键。有两个键“peers”和“mininterval”。
据我了解,在我调用客户端方法下载后,它从跟踪器请求一些信息,然后尝试解析此信息。这就是错误所在。
那么,问题是为什么会这样呢?是库中有错误还是我出了什么问题?
最佳答案
问题到底是什么?
请编辑您的问题并添加更多详细信息。
最好包含 sscce .
在您的问题中添加一个指向出现此错误的 torrent 文件的链接。你如何构建 ttorrent?
确认您看到的错误是在从 Android 运行时发生的,而在普通 Java 中不会发生。
您可以使用 git 从 github 获取 ttorrent 代码,或者单击 github 项目上的按钮下载 zip。
ttorrent 使用 Maven。如果您手动获取依赖项,您可能无法获得正确的版本。您应该将代码作为 Maven 项目导入到 Eclipse 中。Eclipse -> 文件 -> ...导入 -> Maven -> 现有 Maven 项目
在导航器 Pane 中。找到 ttorrent 项目并右键单击选择 Run As -> Maven Build ...对于目标,输入“package”并单击“Run”。
我从 ttorrent 示例客户端开始,并添加了已知良好的路径 Ubuntu 13.04 torrent file还有一个要保存到的目录。
我在调试器中运行了代码,ttorrent 运行正常。它开始下载 Ubuntu,没有抛出异常或打印错误消息。
在您列出的行中,我看到参数映射有四个条目(“interval”、“complete”、“peers”、“incomplete”)。
这是我使用的客户端代码:
public class ClientTest
{
public static void main(String[] args) throws NoSuchAlgorithmException
{
try {
SharedTorrent fromFile =
SharedTorrent.fromFile(
new File("j:/ubuntu-13.04-desktop-amd64.iso.torrent"),
new File("j:/td"));
Client client =
new Client(InetAddress.getLocalHost(), fromFile);
client.download();
client.waitForCompletion();
} catch (UnknownHostException ex) {
Logger.getLogger(ClientTest.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(ClientTest.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
关于java - ttorrent 库 HttpResponseMessage 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16822484/
在 HttpClient 内部使用语句我需要从某个地方解包 HttpResponseMessage。 using (HttpClient client = new HttpClient()) {
我需要您在以下方面提供帮助。近一个月来,我一直在阅读有关任务和异步的内容。 我想尝试在一个简单的 wep api 项目中实现我新获得的知识。我有以下方法,并且它们都按预期工作: public Htt
var request = new HttpRequestMessage(HttpMethod.Get, $"api/Items"); request.Headers.Accept.Add(new M
我有一个方法接受 Stream 参数并将其传递给服务器 public async Task Execute(Stream archive) { archive.Seek(0,
我有如下服务的 MVC 项目: namespace comp.Services { public class CompService { public HttpClie
我已经验证了将 HttpResponseMessage 作为返回类型的文件设置为“编译”,就像他们在这里所说的:Why I cannot use HttpResponseMessage class?
我正在调用一个返回任务的方法,在调用方法中我需要读取字符串形式的响应。 这是我输入的代码: static public async Task Validate(string baseUri,HttpC
在等待新的 HttpClientFactory 解决 HttpClient 的所有问题时, 我仍然找不到是否应该处理 HttpResponseMessage 和 HttpRequestMessage
为什么要实现这个Web API [HttpGet("hello")] public HttpResponseMessage Hello() { var res = new HttpRespon
我正在编写一个 Web API Controller ,现在我有以下代码: public class PicklistsController : ApiController { private
我收到了 System.Net.Http.HttpResponseMessage> 类型的对象, 我如何获得 List ? 我尝试转换 content 属性并通过其 value 属性从 content
HttpResponseMessage r = new HttpResponseMessage(); r.StatusCode = HttpStatusCode.OK; r.Reaso
我正在尝试在我的 Web api 包装器中编写一个方法。我想利用“异步/等待”功能,这样用户界面就不会被阻塞。下面是 Web API 包装器中的代码片段。 public static asyn
我正在尝试从 .NET Core MVC 应用程序进行简单的 API 调用: using (var client = new HttpClient()) { client.BaseAddres
第一次使用.net的Httpclient,感觉很吃力。我已经设法调用服务器并从它接收响应,但一直停留在从响应中读取。这是我的代码: if (Method == HttpVerb.POST)
我想在 HttpResponseMessage 内容中返回一个文件,如下所示: return Request.CreateResponse(HttpStatusCode.OK, {{a file he
应用程序应该从 LoginUser() 接收到 httpresponsemessage 但它变得没有响应。 private void button1_Click(object sender,
我正在计算我的 C# web api 的性能。我写了一个非常简单的 HelloWorld 响应: public class HelloWorldController : ApiController {
我有一个 DelegatingHandler 的实现,它基本上接受一个请求并将其寻址到另一个服务器 ( http://localhost:9999/test/page.php --> http://o
我一直在开发移动应用程序的后端和前端,但在让我的帖子请求正常工作时遇到了问题。我一直在前端使用 Xamarin.Forms,在后端使用 .Net。 客户端代码: var res = await App
我是一名优秀的程序员,十分优秀!