android 2.3.3 发送彩信失败:internal server error

jxdong1013 2012-10-16 11:21:09

最近想做一个发送彩信的功能,不是调用系统自带的发送界面。
网上下载了一个 android mms的发送短信的源代码,来发送的。
但是 发送一直失败,提示"Internal Server Error".求高人解答。

下面贴出代码(参考之网络上的资料):

Byte[] mbytesToSend =null;
//这个函数是把彩信内容 转换成 字节数组
void MMmakePdu()
{
String subject ="彩信测试";
SendReq sendRequest = new SendReq();
EncodedStringValue[] sub = EncodedStringValue.extract(subject);
if (sub != null & sub.length != 0) {
sendRequest.setSubject(sub[0]);
}

EncodedStringValue[] phoneNumbers = EncodedStringValue.extract("13788888888");
if (phoneNumbers != null & phoneNumbers.length != 0){
sendRequest.addTo(phoneNumbers[0]);
}

PduBody pduBody = new PduBody();

PduPart partPdu = new PduPart();
partPdu.setCharset(CharacterSets.UTF_8);
partPdu.setName("测试".getBytes());
partPdu.setContentType("image/png".getBytes());
partPdu.setDataUri(new Uri("file://mnt/sdcard//1.png"));
pduBody.addPart(partPdu);

sendRequest.setBody(pduBody);

PduComposer composer = new PduComposer(this, sendRequest);
mbytesToSend = composer.make();
//据说发送彩信需要 APN 切换到 CMWAP下。。。
final List<String> list = getSimMNC(this);

Thread t = new Thread(new Runnable() {
public void run() {
try{
sendMMMS(TestActivity.this, mbytesToSend);
}catch (Exception e){
e.printStackTrace();
}
}
});
t.start();
}



public static String mmscUrl = "http://mmsc.monternet.com"; //移动
public static String mmsProxy = "10.0.0.172";
public static String mmsPort = "80";
private static String HDR_VALUE_ACCEPT_LANGUAGE = "";
private static final String HDR__KEY_ACCEPT = "Accept";
private static final String HDR_KEY_ACCEPT_LANGUAGE = "Accept-Language";
private static final String HDR_VALUE_ACCEPT = "*/*, application/vnd.wap.mms-message, application/vnd.wap.sic";


//发送到彩信中心
public static byte[] sendMMMS(Context context, byte[] pdu) throws Exception
{
HDR_VALUE_ACCEPT_LANGUAGE=HTTP.UTF_8;
if (mmscUrl == null)
{
throw new IllegalAccessException("URL must not be null");
}

HttpClient client = null;
try{
URI hostUrl = new URI(mmscUrl);
HttpHost target = new HttpHost( hostUrl.getHost(), hostUrl.getPort(), HttpHost.DEFAULT_SCHEME_NAME);
client = AndroidHttpClient.newInstance("Android-Mms/2.0");
HttpPost post = new HttpPost(mmscUrl);
ByteArrayEntity entity = new ByteArrayEntity(pdu);
entity.setContentType("application/vnd.wap.mms-message");
post.setEntity(entity);
post.addHeader(HDR__KEY_ACCEPT,HDR_VALUE_ACCEPT);
post.addHeader(HDR_KEY_ACCEPT_LANGUAGE, HDR_VALUE_ACCEPT_LANGUAGE);

HttpParams params = client.getParams();
HttpProtocolParams.setContentCharset(params, "UTF-8");

ConnRouteParams.setDefaultProxy(params, new HttpHost(mmsProxy, 80));

HttpResponse response = client.execute(target,post);//运行到这个函数,就出错了,(Internal Server Error)

StatusLine status = response.getStatusLine();
System.out.println("status : " + status.getStatusCode());
if (status.getStatusCode() != 200)
{
System.out.println("!200");
throw new IOException("HTTP error: " + status.getReasonPhrase());
}

HttpEntity resentity = response.getEntity();
byte[] body = null;

if (resentity != null)
{
try{
if (resentity.getContentLength() <= 0)
{
body = new byte[(int)resentity.getContentLength()];
DataInputStream dis = new DataInputStream(resentity.getContent());

try{
dis.readFully(body);
}finally{
try{
dis.close();
}catch (IOException e)
{
e.printStackTrace();
}
}
}

}finally
{
if (entity != null)
entity.consumeContent();
}
}
System.out.println("result : "+ new String(body));
return body;

}catch (Exception e)
{
e.printStackTrace();
}
return new byte[0];

}
...全文
296 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxdong1013 2013-04-11
  • 打赏
  • 举报
回复
原因已经找到,是发生的图片太大了。
whuhank 2013-03-19
  • 打赏
  • 举报
回复
楼主你的问题解决了吗?我最近也想实现这个功能,一直找不到合适的范例来看,可以看看你的源代码吗? nchank@163.com,谢谢!
jxdong1013 2012-10-16
  • 打赏
  • 举报
回复
移动彩信中心地址怎么会有问题呢?
不然 大家都 发不了 彩信了吧!
不简单de 2012-10-16
  • 打赏
  • 举报
回复
Internal Server Error 是服务器的问题吧

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧