Foxtable(狐表)用户栏目专家坐堂 → [求助]调用java 的webservices接口


  共有4909人关注过本帖树形打印复制链接

主题:[求助]调用java 的webservices接口

帅哥哟,离线,有人找我吗?
huhu
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
[求助]调用java 的webservices接口  发帖心情 Post By:2016/11/15 16:03:00 [显示全部帖子]

这是对方给我的webservices接口
http://192.168.1.83:8002/WebService/OMGR?WSDL
返回数据格式:
“{u8OrderNo:000111,u8LineNo :1,productNo:8111,......}”
 
具体可参考
append("{u8OrderNo:"+schd.getOdDetail().getParentOrder().getOrderNo()+","
+"u8LineNo:"+schd.getOdDetail().getU8LineNo()+","
+"productNo:"+schd.getOdDetail().getProductNo()+","
+"productType:"+schd.getOdDetail().getProductType()+","
+"bdMaterialNo:"+schd.getOdDetail().getBdMaterialNo()+","
+"bdMaterialName:"+schd.getOdDetail().getBdMaterialName()+","
+"productionQuantity:"+schd.getProductionQuantity()+","
+"typeDscr:"+schd.getProductionType()+","
+"depName:"+schd.getDepName()+","
+"startDate:"+schd.getStartDate()+","
+"endDate:"+schd.getEndDate()+","
+"activeOSNo:"+schd.getOdDetail().getActiveOSNo()+","
+"remark:"+schd.getRemark()+","
+"swVersion:"+schd.getOdDetail().getSwVersion()
+"}");
上面是对方提供的。我现在如何调用他的接口?我需要在一个文本框输入"工单号-行号“调用他的接口,keydown事件写代码。希望做到解析webservices接口返回的string,然后把接口对应的加入到我的计划表里面。


 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/11/15 17:03:00 [显示全部帖子]

keydown代码这样?
Dim gdhhh As WinForm.TextBox = e.Form.Controls("TextBox3")
Dim msg As String = gdhhh.text
Dim req = System.Net.WebRequest.Create("http://192.168.1.83:8002/WebService/OMGR?WSDL ")
req.Method = "POST"
req.C    
Dim aryBuf As Byte() = Encoding.GetEncoding("UTF-8").GetBytes(msg)
req.ContentLength = aryBuf.Length
Dim writer = req.GetRequestStream()
writer.Write(aryBuf, 0, aryBuf.Length)
writer.Close()
writer.Dispose()
Dim pos = req.GetResponse
Dim stm As System.IO.Stream = pos.GetResponseStream()
Dim reader As New System.IO.StreamReader(stm)
Dim str As String = reader.ReadToEnd
pos.Close
stm.Close
reader.close

 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/11/16 11:34:00 [显示全部帖子]

.NET Framework 版本:2.0.50727.7905
Foxtable 版本:2016.7.29.1
错误所在事件:窗口,生产入库,TextBox3,KeyDown
详细错误信息:
远程服务器返回错误: (415) Unsupported Media Type。


If e.KeyCode = keys.enter Then
    Dim gdhhh As WinForm.TextBox = e.Form.Controls("TextBox3")
    Dim msg As String = gdhhh.text
    msgbox(1)
    Dim req = System.Net.WebRequest.Create("http://192.168.1.83:8002/WebService/OMGR?WSDL")
    req.Method = "POST"
    msgbox(2)
    req.C
    msgbox(3)
    Dim aryBuf As Byte() = Encoding.GetEncoding("UTF-8").GetBytes(msg)
    msgbox(4)
    req.ContentLength = aryBuf.Length
    msgbox(5)
    Dim writer = req.GetRequestStream()
    msgbox(6)
    writer.Write(aryBuf, 0, aryBuf.Length)
    msgbox(7)
    writer.Close()
    msgbox(8)
    writer.Dispose()
    msgbox(9)
    Dim pos = req.GetResponse
    msgbox(10)------没有弹出10.
    Dim stm As System.IO.Stream = pos.GetResponseStream()
    Dim reader As New System.IO.StreamReader(stm)
    Dim str As String = reader.ReadToEnd
    pos.Close
    stm.Close
    reader.close
End If
[此贴子已经被作者于2016/11/16 11:45:14编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/11/16 15:03:00 [显示全部帖子]

这个,这个是对外的,看看行不?
http://203.110.175.29:8091/WebService/OMGR?WSDL

 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/11/16 17:37:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20161116173342.png
图片点击可在新窗口打开查看
 

VS 添加类的代码。生成了ClassLibrary1。然后ft引用。
Public Class Class1
    Dim web As New ServiceReference1.WebServiceOmgrClient()
    Public Function getScheduleByWorkOrder(ByVal workOrderNo As String, ByVal lineNo As String) As String
        Return web.getScheduleByWorkOrder(workOrderNo, lineNo)
    End Function
End Class

keydown代码:运行出现附件错误。
Dim gdhhh As WinForm.TextBox = e.Form.Controls("TextBox3")
If e.KeyCode = keys.enter Then
    If gdhhh.text.Contains("-") Then
        Dim id As Integer = gdhhh.text.IndexOf("-")
        Dim str1 As String = gdhhh.text.SubString(0,id)
        Dim str2 As String = gdhhh.text.SubString(id + 1)
        Dim dl As new ClassLibrary1.Class1()
        MessageBox.Show(dl.getScheduleByWorkOrder(str1,str2))

    End If
End If

 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/11/17 10:53:00 [显示全部帖子]

现在弹出正确的返回值。
现在的问题是,如何把返回的string,按照格式写入到计划表2呢?
计划表2的列名有工单号,工单行号,工单号_工单行号,订单号,订单行号,订单号_订单行号,客户物料编码,客户物料名称,博达物料编码,博达物料名称,排产数量,类别名称,生产部门名称,开工日期,完工日期,两化表编号,备注,软件版本,
返回string的格式为
{u8OrderNo:H21611019,u8LineNo:1,productNo:XKPON-CAR0042A,productType:AOCM-60-16PON-8GE-SFP-G2,bdMaterialNo:CBPON-CAR0009A,bdMaterialName:LS85-16PON-8GE-SFP-V3,productionQuantity:1,typeDscr:null,depName:制造中心-装配部-高端,startDate:2016-11-17 00:00:00.0,endDate:2016-11-18 00:00:00.0,activeOSNo:oeout8464e00101,remark:null,swVersion:03088_2016}
对应关系如下
订单号----u8OrderNo
订单行号---u8LineNo
订单号_订单行号-----u8OrderNo-u8LineNo
客户物料编码----productNo
客户物料名称----productType
博达物料编码----bdMaterialNo
博达物料名称----bdMaterialName
排产数量-----productionQuantity
类别名称----typeDscr
生产部门名称---depName
开工日期----startDate
完工日期----endDate
两化表编号---activeOSNo
备注----remark
软件版本---swVersion
怎么完善keydown代码:
If e.KeyCode = keys.enter Then
    If gdhhh.text.Contains("-") Then
        Dim id As Integer = gdhhh.text.IndexOf("-")
        Dim str1 As String = gdhhh.text.SubString(0,id)
        Dim str2 As String = gdhhh.text.SubString(id + 1)
        Dim dl As new ClassLibrary1.Class1()
        MessageBox.Show(dl.getScheduleByWorkOrder(str1,str2))
        Dim r As Row = Tables("计划表2").AddNew
        r("工单号") = str1
        r("工单行号") = str2
...
end if
end if





 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/11/17 11:16:00 [显示全部帖子]

If e.KeyCode = keys.enter Then
    If gdhhh.text.Contains("-") Then
        Dim id As Integer = gdhhh.text.IndexOf("-")
        Dim str1 As String = gdhhh.text.SubString(0,id)
        Dim str2 As String = gdhhh.text.SubString(id + 1)
        Dim dl As new ClassLibrary1.Class1()
        Dim Multi As String =dl.getScheduleByWorkOrder(str1,str2)
        Dim Values() As String------返回的有{},这个{}怎么去掉。
        Values = Multi.split(",")
        For Index As Integer = 0 To Values.Length - 1
            MessageBox.Show(Values(Index))-----数组元素变为了A:B,那么怎么判断对应关系,然后把冒号后面的值写到对应的列呢。
        Next
        Dim r As Row = Tables("计划表2").AddNew
        r("工单号") = str1
        r("工单行号") = str2

 回到顶部