首页 / C# / 使用C#在Drupal中创建节点
使用C#在Drupal中创建节点
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用C#在Drupal中创建节点,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2464字,纯文字阅读大概需要4分钟。
内容图文
![使用C#在Drupal中创建节点](/upload/InfoBanner/zyjiaocheng/655/30f61e30416a46f788e70bc6f5d0cce7.jpg)
我需要制作一个(“ webservice”)C#应用程序,该应用程序可以使用xmlrpc为drupal 7创建/更新/删除节点.每次我运行我的应用程序时,我都会从xmlrpc文件(库)中获取错误.我试图找到使用xmlrpc连接到drupal的C#的代码/文档,但徒劳.
如果您能指出正确的方向或与我共享一些C#代码,我将非常高兴.
{
[XmlRpcUrl("http://testing/testserver")]
public interface IDrupalServices
{
[XmlRpcMethod("node.get")]
XmlRpcStruct NodeLoad(int nid, string[] field);
[XmlRpcMethod("node.save")]
void NodeSave(XmlRpcStruct node);
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
IDrupalServices drupal = XmlRpcProxyGen.Create<IDrupalServices>();
int nid = 227;
string[] fields = new string[] { };
XmlRpcStruct node = drupal.NodeLoad(nid, fields);
string teaser = node["teaser"].ToString();
welcomeTxt.Text = teaser;
}
private void button1_Click(object sender, EventArgs e)
{
string title = txtTitle.Text;
string body = txtBody.Text;
IDrupalServices drupal = XmlRpcProxyGen.Create<IDrupalServices>();
XmlRpcStruct node = new XmlRpcStruct();
node["id"] = 1001;
node["title"] = title;
node["body"] = body;
node["teaser"] = body;
node["format"] = 1;
node["type"] = "webservice";
node["promote"] = false;
drupal.NodeSave(node);
MessageBox.Show("The post was been created!");
}
}
}
运行此命令后,我得到以下错误:服务器返回了错误异常:[-32601]服务器错误.未指定请求的方法node.get. -在XmlRpcSerializer.cs中
谢谢,
弗洛林
解决方法:
如果您使用的是Drupal 7,则必须使用服务3,该服务没有node.get方法(或发生时的node.save).它们已被替换为node.retrieve和node.create& node.update分别.
您可以在“服务”模块文件夹中的resources / node_resource.inc文件中查看所有可用方法.
更新
在内部,使用drupal_execute提交节点,该函数用于提交表单.由于主体是Drupal中的一个字段,因此它应为以下格式的多维数组(PHP版本):
$data["body"][$language][0]["value"]
$language要么是节点的特定语言,要么是未定义语言的und(除非您要使用多语言站点,否则通常是这样).您需要构建一个类似于C#代码中的数组,Drupal应该保存它.
另一个更新
Java XML-RPC client example for Services使用HashMap类型来执行此操作,所以我最好的猜测是您可以使用Dictionary(尽管这似乎不必要地复杂):
var innerValue = new Dictionary<string, string>();
innerValue.Add("value", txtBody.Text);
var language = new Dictionary<int, Dictionary<string, string>>();
language.Add(0, innerValue);
var body = new Dictionary<string, Dictionary<int, Dictionary<string, string>>>();
body.Add("und", language);
node["body"] = body;
自从我用C#编码已经过去了几年,所以请原谅其中的任何错误.另外,我很确定可以更有效地声明它,但是老实说我忘记了大多数语言!
内容总结
以上是互联网集市为您收集整理的使用C#在Drupal中创建节点全部内容,希望文章能够帮你解决使用C#在Drupal中创建节点所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。