Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:在HTTP Post中发送字节[]和其他参数_Java_Http_Post_Encryption_Bytearray - Fatal编程技术网

Java:在HTTP Post中发送字节[]和其他参数

Java:在HTTP Post中发送字节[]和其他参数,java,http,post,encryption,bytearray,Java,Http,Post,Encryption,Bytearray,我正在为最近公开的非官方Snapchat API开发Java客户端库。顺便说一句,到目前为止,我的库的GitHub如下: 我的大多数请求都可以正常工作,我可以登录、下载图像等。到目前为止,我使用UniRest处理所有这些请求,因为我喜欢API的简单性 我正在尝试按照此处概述的格式上载媒体: 生成任何字段都没有问题。数据是AES-ECB加密数据的字节[],我从文件中读取并通过指定的加密算法运行 我试过几件事: 使用UniRest的.field(字符串名称,文件文件)方法将文件添加为参数。我使用从

我正在为最近公开的非官方Snapchat API开发Java客户端库。顺便说一句,到目前为止,我的库的GitHub如下:

我的大多数请求都可以正常工作,我可以登录、下载图像等。到目前为止,我使用UniRest处理所有这些请求,因为我喜欢API的简单性

我正在尝试按照此处概述的格式上载媒体:

生成任何字段都没有问题。数据是AES-ECB加密数据的
字节[]
,我从文件中读取并通过指定的加密算法运行

我试过几件事:

  • 使用UniRest的
    .field(字符串名称,文件文件)
    方法将文件添加为参数。我使用从
    字节[]
    创建的临时Dile。这使我从服务器获得了一个
    401未经授权的
    ,因此我认为UniRest添加了一些我不想要的头

  • 使用
    字符串(byte[]bytes,String encoding)
    构造函数和
    UTF-8
    编码,将
    字节[]
    序列化为
    字符串。这会给我一个
    500服务器错误

  • 根本不发送
    数据
    字段,只是为了看看会发生什么。这会给我一个
    400错误请求


如果查看Python库中的
upload
方法
pysnap
(init.py“>https://github.com/martinp/pysnap/blob/master/pysnap/init.py)您可以看到,我尝试做的事情以前只使用Python的
请求
库。我不知道如何在Java中获得相同的行为。

我的理解是,您需要对
字节[]进行编码
使用base-64编码将数据作为字符串。尝试使用
javax.xml.bind.DatatypeConverter.printBase64Binary
或base-64的第三方库


使用
string(byte[]bytes,string编码)转换为字符串是完全不同的。

我的理解是,您需要使用base-64编码将
byte[]
数据编码为字符串。请尝试使用
javax.xml.bind.DatatypeConverter.printBase64Binary
或base-64的第三方库


使用
string(byte[]bytes,string编码)转换为字符串是完全不同的。

我的理解是,您需要使用base-64编码将
byte[]
数据编码为字符串。请尝试使用
javax.xml.bind.DatatypeConverter.printBase64Binary
或base-64的第三方库


使用
string(byte[]bytes,string编码)转换为字符串是完全不同的。

我的理解是,您需要使用base-64编码将
byte[]
数据编码为字符串。请尝试使用
javax.xml.bind.DatatypeConverter.printBase64Binary
或base-64的第三方库


使用
string(字节[]字节,字符串编码)转换为字符串
完全不同。

也不起作用,仍然是500。希望服务器能给出更好的错误。为什么你认为服务器会使用base 64?这是你对Snapchat的了解还是仅仅是在网络上做出的假设?@hatboysam-加密数据显示解密代码。也许我误读了文档,howe它可能只适用于故事,而不适用于媒体。非常确定我的加密工作正常,因为我可以正确地解密快照,Java中加密和解密的唯一区别是
Cipher.decrypt\u MODE
vs
Cipher.ENCRYPT\u MODE
。这是使用非官方API的问题…调试起来太难了。@hatboysam-我认为PHP客户端实现会很有用。@ot是因为加密,但因为它是如何构造HTTP事务的。它显然将加密数据写入临时文件,然后指向该文件作为上传字段。啊,好的。我用UniRest尝试过,我可能会用Apache HTTP客户端尝试。也不起作用,仍然是500。希望服务器能给出更好的错误。Why您是否假设服务器会使用base 64?这是您对Snapchat的了解还是仅仅是在网络上做出的假设?@hatboysam-加密数据上显示的解密代码。但是,也许我误读了文档,它可能只适用于故事,而不适用于媒体。看看作者是如何实现上传的可能会有所启发在PHP中()。非常确定我的加密工作正常,因为我可以正确地解密快照,Java中加密和解密的唯一区别是
Cipher.decrypt\u MODE
vs
Cipher.ENCRYPT\u MODE
。这是使用非官方API的问题…调试起来太难了。@hatboysam-我认为PHP客户端实现会很有用。@ot是因为加密,但因为它是如何构造HTTP事务的。它显然将加密数据写入临时文件,然后指向该文件作为上传字段。啊,好的。我用UniRest尝试过,我可能会用Apache HTTP客户端尝试。也不起作用,仍然是500。希望服务器能给出更好的错误。Why您是否假设服务器会使用base 64?这是您对Snapchat的了解还是仅仅是在网络上做出的假设?@hatboysam-加密数据上显示的解密代码。但是,也许我误读了文档,它可能只适用于故事,而不适用于媒体。看看作者是如何实现上传的可能会有所启发在PHP中()。非常确定我的加密工作正常,因为我可以正确地解密快照,Java中加密和解密的唯一区别是
Cipher.decrypt\u MODE
vs
Cipher.ENCRYPT\u MODE
。这是使用非官方API的问题…调试起来太难了。@hatboysam-我认为PHP客户端实现会很有用。@因为enc的原因