Blackberry 用户代理和黑莓6.0?
在我的黑莓OS 6.0应用程序中,我使用HttpConnection发布了多个图像文件, 这就是我正在尝试的Blackberry 用户代理和黑莓6.0?,blackberry,Blackberry,在我的黑莓OS 6.0应用程序中,我使用HttpConnection发布了多个图像文件, 这就是我正在尝试的 byte[] _dataToBePost = strPostData.getBytes(); String lineEnd = "\r\n"; String boundary = "----------------------------"; String boundaryStartBytes = "--------
byte[] _dataToBePost = strPostData.getBytes();
String lineEnd = "\r\n";
String boundary = "----------------------------";
String boundaryStartBytes = "------------------------------\r\n";
byte[] startBytes = boundaryStartBytes.getBytes();
String boundaryEndBytes = "\r\n------------------------------\r\n";
byte[] endBytes = boundaryEndBytes.getBytes();
_httpConnection = (HttpConnection)Connector.open(url,Connector.READ_WRITE,true);
// Set the request method and headers
_httpConnection.setRequestMethod(HttpConnection.POST);
_httpConnection.setRequestProperty("If-Modified-Since","29 Oct 1999 19:43:31 GMT");
_httpConnection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0");
_httpConnection.setRequestProperty("Content-Language", "en-US");
if( PhotoToSend != null)
//if(AttachPhotos._vctAccPhotos.size() > 0)
{
String[] strAccidentPhoto = {"AccidentPhoto1", "AccidentPhoto2", "AccidentPhoto3", "AccidentPhoto4", "AccidentPhoto5"};
for(int i=0; i<5; i++)
{
String header = "Content-Disposition: form-data; name=\"file1\";filename=\""+ "AccidentPhoto"+ i +".jpg"+ "\"" + lineEnd + "Content-Type: application/octet-stream"+lineEnd+lineEnd;
byte[] composition = header.getBytes();
byte[] photoData = AttachPhotos.get(strAccidentPhoto[i]);
if(photoData != null)
{
_outputStream.write(startBytes);
_outputStream.write(composition);
_outputStream.write(photoData);
_outputStream.write(endBytes);
}
}
}
byte[]\u dataToBePost=strPostData.getBytes();
字符串lineEnd=“\r\n”;
字符串边界=“------------------------------------”;
字符串boundaryStartBytes=“-----------------------------------\r\n”;
byte[]startBytes=boundaryStartBytes.getBytes();
字符串boundaryEndBytes=“\r\n--------------------------------------\r\n”;
byte[]endBytes=boundaryEndBytes.getBytes();
_httpConnection=(httpConnection)Connector.open(url,Connector.READ\u WRITE,true);
//设置请求方法和头
_setRequestMethod(httpConnection.POST);
_httpConnection.setRequestProperty(“如果自1999年10月29日19:43:31 GMT起修改”);
_setRequestProperty(“用户代理”、“配置文件/MIDP-2.0配置/CLDC-1.0”);
_setRequestProperty(“内容语言”,“en-US”);
如果(PhotoToSend!=null)
//如果(附件照片._vctacphotos.size()>0)
{
字符串[]strAccidentPhoto={“acidentphoto1”、“acidentphoto2”、“acidentphoto3”、“acidentphoto4”、“acidentphoto5”};
对于(int i=0;i
在我的代码中,我使用用户代理作为
配置文件/MIDP-2.0
配置/CLDC-1.0。这是在制造吗
发布多个文件有问题吗
byte[] _dataToBePost = strPostData.getBytes();
String lineEnd = "\r\n";
String boundary = "----------------------------";
String boundaryStartBytes = "------------------------------\r\n";
byte[] startBytes = boundaryStartBytes.getBytes();
String boundaryEndBytes = "\r\n------------------------------\r\n";
byte[] endBytes = boundaryEndBytes.getBytes();
_httpConnection = (HttpConnection)Connector.open(url,Connector.READ_WRITE,true);
// Set the request method and headers
_httpConnection.setRequestMethod(HttpConnection.POST);
_httpConnection.setRequestProperty("If-Modified-Since","29 Oct 1999 19:43:31 GMT");
_httpConnection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0");
_httpConnection.setRequestProperty("Content-Language", "en-US");
if( PhotoToSend != null)
//if(AttachPhotos._vctAccPhotos.size() > 0)
{
String[] strAccidentPhoto = {"AccidentPhoto1", "AccidentPhoto2", "AccidentPhoto3", "AccidentPhoto4", "AccidentPhoto5"};
for(int i=0; i<5; i++)
{
String header = "Content-Disposition: form-data; name=\"file1\";filename=\""+ "AccidentPhoto"+ i +".jpg"+ "\"" + lineEnd + "Content-Type: application/octet-stream"+lineEnd+lineEnd;
byte[] composition = header.getBytes();
byte[] photoData = AttachPhotos.get(strAccidentPhoto[i]);
if(photoData != null)
{
_outputStream.write(startBytes);
_outputStream.write(composition);
_outputStream.write(photoData);
_outputStream.write(endBytes);
}
}
}
不,我也建议不要碰这个标题,因为预期操作系统会以最正确的方式设置它
byte[] _dataToBePost = strPostData.getBytes();
String lineEnd = "\r\n";
String boundary = "----------------------------";
String boundaryStartBytes = "------------------------------\r\n";
byte[] startBytes = boundaryStartBytes.getBytes();
String boundaryEndBytes = "\r\n------------------------------\r\n";
byte[] endBytes = boundaryEndBytes.getBytes();
_httpConnection = (HttpConnection)Connector.open(url,Connector.READ_WRITE,true);
// Set the request method and headers
_httpConnection.setRequestMethod(HttpConnection.POST);
_httpConnection.setRequestProperty("If-Modified-Since","29 Oct 1999 19:43:31 GMT");
_httpConnection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0");
_httpConnection.setRequestProperty("Content-Language", "en-US");
if( PhotoToSend != null)
//if(AttachPhotos._vctAccPhotos.size() > 0)
{
String[] strAccidentPhoto = {"AccidentPhoto1", "AccidentPhoto2", "AccidentPhoto3", "AccidentPhoto4", "AccidentPhoto5"};
for(int i=0; i<5; i++)
{
String header = "Content-Disposition: form-data; name=\"file1\";filename=\""+ "AccidentPhoto"+ i +".jpg"+ "\"" + lineEnd + "Content-Type: application/octet-stream"+lineEnd+lineEnd;
byte[] composition = header.getBytes();
byte[] photoData = AttachPhotos.get(strAccidentPhoto[i]);
if(photoData != null)
{
_outputStream.write(startBytes);
_outputStream.write(composition);
_outputStream.write(photoData);
_outputStream.write(endBytes);
}
}
}
更新:多亏了gnuf-我说的“操作系统将以最合适的方式进行设置”是错误的。事实证明,除非您进行了设置,否则根本不会有这样的头。不过,我认为这不是原因,除非您指示服务器拒绝没有用户代理头的请求(这不太可能)
byte[] _dataToBePost = strPostData.getBytes();
String lineEnd = "\r\n";
String boundary = "----------------------------";
String boundaryStartBytes = "------------------------------\r\n";
byte[] startBytes = boundaryStartBytes.getBytes();
String boundaryEndBytes = "\r\n------------------------------\r\n";
byte[] endBytes = boundaryEndBytes.getBytes();
_httpConnection = (HttpConnection)Connector.open(url,Connector.READ_WRITE,true);
// Set the request method and headers
_httpConnection.setRequestMethod(HttpConnection.POST);
_httpConnection.setRequestProperty("If-Modified-Since","29 Oct 1999 19:43:31 GMT");
_httpConnection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0");
_httpConnection.setRequestProperty("Content-Language", "en-US");
if( PhotoToSend != null)
//if(AttachPhotos._vctAccPhotos.size() > 0)
{
String[] strAccidentPhoto = {"AccidentPhoto1", "AccidentPhoto2", "AccidentPhoto3", "AccidentPhoto4", "AccidentPhoto5"};
for(int i=0; i<5; i++)
{
String header = "Content-Disposition: form-data; name=\"file1\";filename=\""+ "AccidentPhoto"+ i +".jpg"+ "\"" + lineEnd + "Content-Type: application/octet-stream"+lineEnd+lineEnd;
byte[] composition = header.getBytes();
byte[] photoData = AttachPhotos.get(strAccidentPhoto[i]);
if(photoData != null)
{
_outputStream.write(startBytes);
_outputStream.write(composition);
_outputStream.write(photoData);
_outputStream.write(endBytes);
}
}
}
或者有没有其他方式来发布
数据
byte[] _dataToBePost = strPostData.getBytes();
String lineEnd = "\r\n";
String boundary = "----------------------------";
String boundaryStartBytes = "------------------------------\r\n";
byte[] startBytes = boundaryStartBytes.getBytes();
String boundaryEndBytes = "\r\n------------------------------\r\n";
byte[] endBytes = boundaryEndBytes.getBytes();
_httpConnection = (HttpConnection)Connector.open(url,Connector.READ_WRITE,true);
// Set the request method and headers
_httpConnection.setRequestMethod(HttpConnection.POST);
_httpConnection.setRequestProperty("If-Modified-Since","29 Oct 1999 19:43:31 GMT");
_httpConnection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0");
_httpConnection.setRequestProperty("Content-Language", "en-US");
if( PhotoToSend != null)
//if(AttachPhotos._vctAccPhotos.size() > 0)
{
String[] strAccidentPhoto = {"AccidentPhoto1", "AccidentPhoto2", "AccidentPhoto3", "AccidentPhoto4", "AccidentPhoto5"};
for(int i=0; i<5; i++)
{
String header = "Content-Disposition: form-data; name=\"file1\";filename=\""+ "AccidentPhoto"+ i +".jpg"+ "\"" + lineEnd + "Content-Type: application/octet-stream"+lineEnd+lineEnd;
byte[] composition = header.getBytes();
byte[] photoData = AttachPhotos.get(strAccidentPhoto[i]);
if(photoData != null)
{
_outputStream.write(startBytes);
_outputStream.write(composition);
_outputStream.write(photoData);
_outputStream.write(endBytes);
}
}
}
可能有一系列原因。基本上,您需要发送“多部分/表单数据”类型的POST请求。因此,您需要与此类请求的格式相对应。在这种情况下,一些最重要的问题可能是:
byte[] _dataToBePost = strPostData.getBytes();
String lineEnd = "\r\n";
String boundary = "----------------------------";
String boundaryStartBytes = "------------------------------\r\n";
byte[] startBytes = boundaryStartBytes.getBytes();
String boundaryEndBytes = "\r\n------------------------------\r\n";
byte[] endBytes = boundaryEndBytes.getBytes();
_httpConnection = (HttpConnection)Connector.open(url,Connector.READ_WRITE,true);
// Set the request method and headers
_httpConnection.setRequestMethod(HttpConnection.POST);
_httpConnection.setRequestProperty("If-Modified-Since","29 Oct 1999 19:43:31 GMT");
_httpConnection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0");
_httpConnection.setRequestProperty("Content-Language", "en-US");
if( PhotoToSend != null)
//if(AttachPhotos._vctAccPhotos.size() > 0)
{
String[] strAccidentPhoto = {"AccidentPhoto1", "AccidentPhoto2", "AccidentPhoto3", "AccidentPhoto4", "AccidentPhoto5"};
for(int i=0; i<5; i++)
{
String header = "Content-Disposition: form-data; name=\"file1\";filename=\""+ "AccidentPhoto"+ i +".jpg"+ "\"" + lineEnd + "Content-Type: application/octet-stream"+lineEnd+lineEnd;
byte[] composition = header.getBytes();
byte[] photoData = AttachPhotos.get(strAccidentPhoto[i]);
if(photoData != null)
{
_outputStream.write(startBytes);
_outputStream.write(composition);
_outputStream.write(photoData);
_outputStream.write(endBytes);
}
}
}
确保使用了正确的“内容长度”和“内容类型”标题。“内容类型”应为“多部分/表单数据;边界=您的实际边界”
确保您没有忘记向结束边界添加两个额外的“-”字符
我不相信操作系统会设置用户代理,因为它是HTTP客户端的属性,而不是操作系统。当您使用黑莓的内置浏览器发出请求时,它会设置自己的用户代理字符串,但当您进行直接HTTP连接时,您可以自由选择字符串。如果您想模拟内置浏览器的用户代理string、 参考@gnuf:你完全正确-刚刚检查了我的应用程序发送的内容-没有用户代理标题。谢谢!