1. 程式人生 > >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.AndroidXML-RPC支援
Android
本身並不支援XML-RPC協議, 需要下載相關應的工具, 本例中使用的XML-RPC從以下地址下載,完整例程中包含此部分

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("http://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.參考:

相關推薦

Android使用XML-RPC實現blog客戶

1.原理介紹 1)XML-RPC介紹XML-RPC的全稱是XML Remote Procedure Call,即XML遠端方法呼叫。原理是XML-RCP工具把傳入的引數組合成XML,然後用通過http

使用zabbix3.0.4的ICMP Ping模版實現客戶網絡狀態的監控

host -1 ping 修改 cat onf 設置報警 amp 網絡狀態 一、登陸Zabbix服務器做以下操作: 1.fping安裝 wget http://www.fping.org/dist/fping-3.16.tar.gz tar zxvf fping-3.16.

Ubuntu16.04下安裝elasticsearch+kibana實現php客戶的中文分詞

lba 實例 exc common adding creat 啟動服務 uid dbms 1.下載安裝elasticsearch和kibana wget https://artifacts.elastic.co/downloads/elasticsearch/elasti

C# 實現FTP客戶

枚舉 username rect 進行 sco fine pac out puts 本文是利用C# 實現FTP客戶端的小例子,主要實現上傳,下載,刪除等功能,以供學習分享使用。 思路: 通過讀取FTP站點的目錄信息,列出對應的文件及文件夾。 雙擊目錄,則顯示子目錄,如果是

unity_小功能實現客戶相互通信功能)

直接 endpoint 客戶端和服務器端 network hat sockets odi family void 服務器端:在VS中新建項目,用於服務器的搭建 using System;using System.Collections.Generic; using

go語言實現 tcp客戶/服務

tcpl sem close byte cpc cep 實現 lee n) / server.go /package main import ("bufio""fmt""net""time")

go語言實現udp客戶/服務

rom client nic exit nil 客戶 ddr close udp / server.go /package main import ("fmt""net""os") func checkError

Python3+telnetlib實現telnet客戶

encode tcl 之前 編碼 tps 連接失敗 lan cli get 一、程序要點說明 python實現telnet客戶端的六個關鍵問題及其答案是: 使用什麽庫實現telnet客戶端----telnetlib 怎麽連接主機----兩種方法,一種是在實例化時傳入ip地址

python3+paramiko實現ssh客戶

bsp 實例化 ucc rom sys imp 執行命令 self 服務 一、程序說明 ssh客戶端實現主要有以下四個問題: 第一個問題是在python中ssh客戶端使用哪個包實現----我們這裏使用的是paramiko 第二個問題是怎麽連接服務器----連接服務器直接使用

基於Apache-Commons-Pool2實現Grpc客戶連接池

i++ exc fin checked count() tcl 抽象 bdd process 概述 在項目運行過程中,有些操作對系統資源消耗較大,比如建立數據庫連接、建立Redis連接等操作,我們希望一次性創建多個連接對象,並在以後需要使用時能直接使用已創建好的連接,達到提

Python學習筆記1:簡單實現ssh客戶和服務

bsp dev bre 客戶端 break 基於 bin listen 客戶 實現基於python 3.6。 server端: 1 __author__ = "PyDev2018" 2 3 import socket,os 4 server = socket.s

Mybatis之攔截器--獲取執行SQL實現客戶數據同步

gin sign factor 方便 完成後 動態代理 exc batis 包安裝 最近的一個項目是將J2EE環境打包安裝在客戶端(使用 nwjs + NSIS 制作安裝包)運行, 所有的業務操作在客戶端完成, 數據存儲在客戶端數據庫中. 服務器端數據庫匯總各客戶端的數據進

linux網絡編程之用socket實現簡單客戶和服務的通信(基於UDP)

服務端 msg ets lin fgets err n) stderr tcp 單客戶端和服務端的通信(基於UDP) 代碼 服務端代碼socket3.c #include<sys/types.h> #include<sys/socket.h>

python socket 套接字編程 單進程服務器 實現客戶訪問

host port list 不能 ioerror 存儲 utf8 所有 tin 服務器: 1 import socket 2 #單進程服務器 實現多客戶端訪問 IO復用 3 #吧所有的客戶端套接字 放在一個列表裏面,一次又一次的便利過濾 4 #這就是apache

如何實現客戶或瀏覽器頁面中整合一個類似plsqldeveloper一樣的查詢功能?

轉載:https://ask.csdn.net/questions/703108 qq_16127313  https://gitee.com/00fly/effict-side/tree/master/dbtool-springboot 專案運維過程中,受到客戶機房管理

基於CAS的單點登入SSO[5]: 基於Springboot實現CAS客戶的前後分離

基於CAS的單點登入SSO[5]: 基於Springboot實現CAS客戶端的前後端分離 作者:家輝,日期:2017-08-24 CSDN部落格: http://blog.csdn.net/gobitan 摘要:現在大部分系統的開發都已經

STM32407+LAN8720A+LWIP 實現LWIP 客戶

update light weak details b- 文件 main add ip協議 一、配置CubeMax工程 二、配置系統時鐘 因為LAN8720使用的是外部25MHz的晶振,所以不需要單片機輸出時鐘 三、配置ETH和LWIP參數

C++ 簡單的 Tcp 實現 socket 客戶客戶通訊

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

使用包掃描和註解配合實現rmi客戶介面自動代理

1、原理:模仿spring-mybatis的mapperscan方式實現包掃描和rmi客戶端自動代理 2、spring代理rmi服務的程式碼: RmiProxyFactoryBean bean = new RmiProxyFactoryBean(); bean.

Java Socket應用(三)多執行緒實現客戶的通訊

伺服器執行緒處理類ServerThread.java : package com.yijia; import java.io.*; import java.net.Socket; /** * 建立時間:2018/10/4 14:59 * 作者: * 郵箱:[ema