Android使用XML-RPC实现blog客户端

简介: Android使用XML-RPC实现blog客户端

1.    原理介绍

1)        XML-RPC介绍

XML-RPC的全称是XML Remote Procedure Call,即XML远程方法调用。原理是XML-RCP工具把传入的参数组合成XML,然后用通过http协议发给服务器,服务器回复XML格式数据,再由工具解析给调用者。

2)        Meta Weblog API

一些Blog提供Meta Weblog API,用以支持通过XML-RPC的方法在软件中编辑及浏览Blog。常用的API如下:

发布新文章(metaWeblog.newPost)、获取分类(metaWeblog.getCategories)和最新文章(metaWeblog.getRecentPosts)、新建文章分类(wp.newCategory)、上传图片音频或视频(metaWeblog. newMediaObject)等。

2.    Android的XML-RPC支持

Android本身并不支持XML-RPC协议, 需要下载相关应的工具, 本例中使用的XML-RPC从以下地址下载,完整例程中包含此部分https://code.google.com/p/android-xmlrpc/downloads/list

3.    例程

package org.xmlrpc;
import java.net.URI;
import java.util.HashMap;
import java.util.Map;
import org.apache.http.conn.HttpHostConnectException;
import org.xmlrpc.android.XMLRPCClient;
import org.xmlrpc.android.XMLRPCException;
import org.xmlrpc.android.XMLRPCFault;
import org.xmlrpc.android.XMLRPCSerializable;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
import android.widget.Toast;
import android.widget.Button;
import android.content.DialogInterface.OnCancelListener;
import android.view.View.OnClickListener;
import android.view.View;
public class TestBlog extends Activity {
      private XMLRPCClient client;
      private URI uri;
      @Override
      public void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               setContentView(R.layout.test_blog);
               Button btn = (Button) findViewById(R.id.send);
               btn.setOnClickListener(new OnClickListener() {
                         public void onClick(View v) {
                                  post();
                         }
               });
      }
      void post() {
               String blogid = ((EditText) findViewById(R.id.blogid_edit)).getText()
                                  .toString();         // 博客ID, 有的博客支持一个用户多个ID
               String username = ((EditText) findViewById(R.id.username_edit))
                                  .getText().toString();   // 用户名
               String password = ((EditText) findViewById(R.id.password_edit))
                                  .getText().toString();   // 密码
               String title = ((EditText) findViewById(R.id.title_edit)).getText()
                                  .toString();         // 标题
               String content = ((EditText) findViewById(R.id.content_edit)).getText()
                                  .toString();         // 正文
               uri = URI.create("https://blog.csdn.net/" + blogid
                                  + "/services/metablogapi.aspx");
               client = new XMLRPCClient(uri);
               Map<String, Object> structx = new HashMap<String, Object>();
               structx.put("title", title);
               structx.put("description", content);
               Object[] params = new Object[] { blogid, username, password, structx,
                                  true };
               try {
                         client.callEx("metaWeblog.newPost", params);
                         Toast.makeText(this, "OK", 10000).show();
               } catch (XMLRPCException e) {
                         Toast.makeText(this, "ERROR" + e, 10000).show();
               }
      }
}

4.    多媒体上传的介绍

上传多图片视频音频方法如下

Map<String, Object> structx = new HashMap<String, Object>();
structx.put("name", “xxx.jpg”);      // 文件名
structx.put("type”, “image/jpeg”);   // 格式
structx.put("bits", filebytes);            // 文件内容, 需要base64编码, 可使用android.util.Base64来编码
structx.put("overwrite", true);         // 是否覆盖
Object[] params = new Object[] { blogid, username, password, structx};
client.callEx("metaWeblog.newPost", params);

通过此方式可以实现相片视频的即片即转功能

5.    参考:

1)        wordpress使用Meta weblog的接口如下https://cn.wordpress.org/xmlrpc.php

2)        【PHP】XML-RPCで投稿!https://blog.studio23c.com/?p=108

3)        完整例程下载https://download.csdn.net/source/2793892

相关文章
|
5月前
|
Android开发 开发者
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
本文详细介绍了如何通过自定义 `attrs.xml` 文件实现 Android 自定义 View 的属性配置。以一个包含 TextView 和 ImageView 的 DemoView 为例,讲解了如何使用自定义属性动态改变文字内容和控制图片显示隐藏。同时,通过设置布尔值和点击事件,实现了图片状态的切换功能。代码中展示了如何在构造函数中解析自定义属性,并通过方法 `setSetting0n` 和 `setbackeguang` 实现功能逻辑的优化与封装。此示例帮助开发者更好地理解自定义 View 的开发流程与 attrs.xml 的实际应用。
101 2
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
|
7月前
|
XML JavaScript Android开发
【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式
本文总结了Android中几种常用的网络技术,包括WebView、HttpURLConnection、OKHttp和XML的Pull解析方式。每种技术都有其独特的特点和适用场景。理解并熟练运用这些技术,可以帮助开发者构建高效、可靠的网络应用程序。通过示例代码和详细解释,本文为开发者提供了实用的参考和指导。
179 15
|
8月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
476 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
8月前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
202 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
9月前
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
385 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
9月前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
227 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
11月前
|
Java Apache C++
别再手写RPC了,Apache Thrift帮你自动生成RPC客户端及服务端代码
Thrift 是一个轻量级、跨语言的远程服务调用框架,由 Facebook 开发并贡献给 Apache。它通过 IDL 生成多种语言的 RPC 服务端和客户端代码,支持 C++、Java、Python 等。Thrift 的主要特点包括开发速度快、接口维护简单、学习成本低和多语言支持。广泛应用于 Cassandra、Hadoop 等开源项目及 Facebook、百度等公司。
别再手写RPC了,Apache Thrift帮你自动生成RPC客户端及服务端代码
|
Android开发
Android WindowFeature小探究,Android客户端Web页面通用性能优化实践
Android WindowFeature小探究,Android客户端Web页面通用性能优化实践
|
存储 Java 数据库
基于全志H713 Android 11:给TvSettings添加default.xml默认值
本文介绍了在全志H713 Android 11平台上为TvSettings应用添加HDMI CEC功能的默认设置值的方法,通过修改SettingsProvider的源码和配置文件来实现默认值的设置,并提供了详细的步骤和测试结果。
491 0
基于全志H713 Android 11:给TvSettings添加default.xml默认值
|
XML Android开发 UED
"掌握安卓开发新境界:深度解析AndroidManifest.xml中的Intent-filter配置,让你的App轻松响应scheme_url,开启无限交互可能!"
【8月更文挑战第2天】在安卓开发中,scheme_url 通过在`AndroidManifest.xml`中配置`Intent-filter`,使应用能响应特定URL启动或执行操作。基本配置下,应用可通过定义特定URL模式的`Intent-filter`响应相应链接。
332 12

热门文章

最新文章