如何使用C#API在amazon mturk上创建新的QualificationType?

时间:2014-08-15 03:43:22

标签: c# amazon-web-services mechanicalturk

我正在尝试创建一个新的QulaificationType,工人必须回答一个问题以获得资格。下面是我的C#代码。我在C#api中使用createQualificationType方法时遇到错误。请帮忙。

using System;
using System.Collections.Generic;
using System.Text;
using Amazon.WebServices.MechanicalTurk;
using Amazon.WebServices.MechanicalTurk.Domain;

namespace CreateHITExample
{
    class Program
    {
        static SimpleClient client = new SimpleClient();

        static void Main(string[] args)
        {
            CreateNewHIT();
        }

        static void CreateNewHIT()
        {
            **QuestionFormQuestion** question = new QuestionFormQuestion();
            question.IsRequired = true;
            question.QuestionIdentifier = "1";
            **ContentType qnContent = new ContentType();**

            QualificationType qualType = client.CreateQualificationType("MyQual2", string.Empty, "My Qualification Type", QualificationTypeStatus.Active, 0, **question**, "680", 600, true, 100);
            string qualTypeId = qualType.QualificationTypeId;
            Console.WriteLine("Created Qualification Type ID 2: {0}", qualTypeId);
        }
    }
}

我必须将问题对象作为参数传递给CreateQualificationType方法。 从上面的代码中可以看出,问题对象是QuestionFormQuestion类。

以下是可能有所帮助的类定义。

来自AWS MTurk dotnet API的QuestionFormQuestion类定义:

public class QuestionFormQuestion
    {
        public QuestionFormQuestion();

        public AnswerSpecificationType AnswerSpecification { get; set; }
        public string DisplayName { get; set; }
        public bool IsRequired { get; set; }
        [XmlIgnore]
        public bool IsRequiredSpecified { get; set; }
        **public ContentType QuestionContent { get; set; }**
        public string QuestionIdentifier { get; set; }
    }

实际问题文本进入QuestionContent属性,该属性的类型为" ContentType"。

来自AWS MTurk dotnet API的

ContentType类定义:

public class ContentType
    {
        public ContentType();

        [XmlChoiceIdentifier("ItemsElementName")]
        [XmlElement("Application", typeof(ApplicationContentType))]
        [XmlElement("Binary", typeof(BinaryContentType))]
        [XmlElement("FormattedContent", typeof(String))]
        [XmlElement("Text", typeof(String))]
        [XmlElement("Title", typeof(String))]
        public object[] Items { get; set; }
        [XmlElement("ItemsElementName")]
        [XmlIgnore]
        public ItemsChoiceType[] ItemsElementName { get; set; }
    }

我必须将Actual Question语句移动到ContentType对象的[XmlElement(" Text",typeof(String))]元素。我不知道这样做的语法。请帮助。

1 个答案:

答案 0 :(得分:0)

我在使用Ruby SDK时遇到了相同的ValueException错误消息,直到我发现(与所有API文档示例不同,它显示了XML是预期的) CreateHit期待Hash,而不是某些参数的XML (XML for Question,但Hash for QualificationRequirement)。

在我的情况下,当我提供XML时,它拒绝了QualificationRequirement,就像它们在文档中显示的那样,但是当我将它作为Hash提供时它就起作用了。

但由于错误信息是相同的,我怀疑这可能是你遇到的问题。 (错误与语言无关......它不是您的SDK,而是当您的SDK提交HIT时从AWS返回的内容。)

testImageView 
    =[[UIImageView alloc]initWithFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y ,self.view.frame.size.width, self.view.frame.size.height
    )]