2015-02-24 49 views
0
def MakeRequest(method:String,url:String, data : Map[String,String]) = { 
    route(FakeRequest(method,url).withHeaders("X-Requested-With" -> "1").withFormUrlEncodedBody(data)).get 
    } 

错误在withFormUrlEncodedBody(data)。它表示预期(String,String),实际:Map [String,String]。什么是(String,String)数据类型?我使用data:(String,String)但输入只接受1映射。它会接受混合映射。下面的代码工作不经过参数:withFormUrlEncodedBody输入的数据类型是什么?

route(FakeRequest(method,url).withHeaders("X-Requested-With" -> "1").withFormUrlEncodedBody("a" -> "b", "c" -> "d")).get 

回答

1

如果检查出documentation,你会看到,这是(String, String)*类型。第一个(T1,T2)代表Tuple2[T1,T2]。其次,*表示可变长度参数,这意味着它接受您想要发送的尽可能多的Tuple2。这可能是一个List或其他类型的Seq

所以,把你原来的例子,你可以做到以下几点:

def MakeRequest(method:String,url:String, data : (String,String)*) = { 
    route(FakeRequest(method,url) 
     .withHeaders("X-Requested-With" -> "1") 
     .withFormUrlEncodedBody(data:_*)).get 
    } 
+0

是的,这是我的尝试,但仍收到的错误:预期(字符串,字符串)实际:Seq [(String,String)] – 2015-02-24 19:53:18

+0

抱歉,忘了投这个。有关适当投射的更多信息 - > https://stackoverflow.com/questions/5079845/using-variable-length-argument-in-scala – 2015-02-24 20:32:13

+0

您节省了我的一天。谢谢 – 2015-02-25 05:28:42

相关问题